From 47382e2e3c653d71ebae66d8e8aecc088866543d Mon Sep 17 00:00:00 2001 From: Karl Rupp Date: Thu, 16 Jul 2020 10:59:33 +0200 Subject: [PATCH] Updated for processors until the end of 2019. --- 48yrs/48-years-processor-trend.eps | 1406 ++++++++++++++++++++++++++++ 48yrs/48-years-processor-trend.pdf | Bin 0 -> 17287 bytes 48yrs/48-years-processor-trend.png | Bin 0 -> 67149 bytes 48yrs/cores.dat | 84 ++ 48yrs/frequency.dat | 95 ++ 48yrs/plot.gnuplot | 56 ++ 48yrs/specint.dat | 73 ++ 48yrs/transistors.dat | 95 ++ 48yrs/watts.dat | 95 ++ README.md | 2 + newdata.txt | 12 +- 11 files changed, 1916 insertions(+), 2 deletions(-) create mode 100644 48yrs/48-years-processor-trend.eps create mode 100644 48yrs/48-years-processor-trend.pdf create mode 100644 48yrs/48-years-processor-trend.png create mode 100644 48yrs/cores.dat create mode 100644 48yrs/frequency.dat create mode 100644 48yrs/plot.gnuplot create mode 100644 48yrs/specint.dat create mode 100644 48yrs/transistors.dat create mode 100644 48yrs/watts.dat diff --git a/48yrs/48-years-processor-trend.eps b/48yrs/48-years-processor-trend.eps new file mode 100644 index 0000000..aa6a799 --- /dev/null +++ b/48yrs/48-years-processor-trend.eps @@ -0,0 +1,1406 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: 48-years-processor-trend.eps +%%Creator: gnuplot 5.2 patchlevel 8 +%%CreationDate: Thu Jul 16 10:51:23 2020 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 338 251 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 338 50 lineto 338 251 lineto 50 251 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +/Metrics {ExtendTextBox Gswidth} def +/Lwidth {currentpoint stroke M 0 vshift R Metrics} def +/Rwidth {currentpoint stroke M dup stringwidth pop neg vshift R Metrics} def +/Cwidth {currentpoint stroke M dup stringwidth pop -2 div vshift R Metrics} def +/GLwidth {currentpoint stroke M 0 vshift R {ExtendTextBox} forall} def +/GRwidth {currentpoint stroke M dup Gwidth vshift R {ExtendTextBox} forall} def +/GCwidth {currentpoint stroke M dup Gwidth 2 div vshift R {ExtendTextBox} forall} def +/GLwidth2 {0 Gwidth AddGlyphWidth} def +/GRwidth2 {Gwidth -1 mul 0 AddGlyphWidth} def +/GCwidth2 {Gwidth 2 div dup -1 mul AddGlyphWidth} def +/AddGlyphWidth { dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse } def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {textshow} {Metrics pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get Gswidth pop -2 div + dup 0 R} {dup 6 get Gswidth pop -2 div 0 R 6 get + textshow 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (48-years-processor-trend.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 5.2 patchlevel 8) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jul 16 10:51:23 2020) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5760.00 4032.00 BoxColFill} if +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 919 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 919 M +63 0 V +4166 0 R +-63 0 V +stroke +294 919 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (0)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +/vshift -46 def +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 1236 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 1236 M +63 0 V +4166 0 R +-63 0 V +stroke +294 1236 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (1)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 1553 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 1553 M +63 0 V +4166 0 R +-63 0 V +stroke +294 1553 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (2)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 1871 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 1871 M +63 0 V +4166 0 R +-63 0 V +stroke +294 1871 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (3)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 2188 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 2188 M +63 0 V +4166 0 R +-63 0 V +stroke +294 2188 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (4)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 2506 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 2506 M +63 0 V +4166 0 R +-63 0 V +stroke +294 2506 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (5)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 2823 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 2823 M +63 0 V +4166 0 R +-63 0 V +stroke +294 2823 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (6)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 3140 M +4229 0 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 3140 M +63 0 V +4166 0 R +-63 0 V +stroke +294 3140 M +[ [(Helvetica) 140.0 0.0 true true 0 (10)] +[(Helvetica) 112.0 70.0 true true 0 (7)] +] -60.7 MRshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +378 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +378 697 M +0 63 V +0 2602 R +0 -63 V +stroke +378 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1970)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +1224 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +1224 697 M +0 63 V +0 2602 R +0 -63 V +stroke +1224 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1980)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +2070 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +2070 697 M +0 63 V +0 2602 R +0 -63 V +stroke +2070 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1990)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +2915 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +2915 697 M +0 63 V +0 2602 R +0 -63 V +stroke +2915 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +3761 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +3761 697 M +0 63 V +0 2602 R +0 -63 V +stroke +3761 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2010)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +4607 697 M +0 2665 V +stroke +1.500 UL +LTb +LCb setrgbcolor +4607 697 M +0 63 V +0 2602 R +0 -63 V +stroke +4607 557 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2020)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +1.500 UL +LTB +LCb setrgbcolor +378 3362 N +378 697 L +4229 0 V +0 2665 V +-4229 0 V +Z stroke +1.000 UP +0.00 0.00 0.00 C +4692 1332 M +[ [(Helvetica) 140.0 0.0 true true 0 (Number of)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.00 C +4692 1179 M +[ [(Helvetica) 140.0 0.0 true true 0 (Logical Cores)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.53 0.00 C +4692 2022 M +[ [(Helvetica) 140.0 0.0 true true 0 (Frequency \(MHz\))] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.73 C +4692 2561 M +[ [(Helvetica) 140.0 0.0 true true 0 (Single-Thread)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.73 C +4692 2410 M +[ [(Helvetica) 140.0 0.0 true true 0 (Performance)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.73 C +4692 2277 M +[ [(Helvetica) 140.0 0.0 true true 0 (\(SpecINT x 10)] +[(Helvetica) 112.0 70.0 true true 0 (3)] +[(Helvetica) 140.0 0.0 true true 0 (\))] +] -60.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.80 0.40 0.00 C +4692 3070 M +[ [(Helvetica) 140.0 0.0 true true 0 (Transistors)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.80 0.40 0.00 C +4692 2918 M +[ [(Helvetica) 140.0 0.0 true true 0 (\(thousands\))] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.73 0.00 0.00 C +4692 1705 M +[ [(Helvetica) 140.0 0.0 true true 0 (Typical Power)] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.73 0.00 0.00 C +4692 1553 M +[ [(Helvetica) 140.0 0.0 true true 0 (\(Watts\))] +] -46.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.00 C +378 214 M +[ [(Helvetica) 80.0 0.0 true true 0 (Original data up to the year 2010 collected and plotted by M. Horowitz, F. Labonte, O. Shacham, K. Olukotun, L. Hammond, and C. Batten)] +] -26.7 MLshow +/Helvetica findfont 140 scalefont setfont +0.00 0.00 0.00 C +378 118 M +[ [(Helvetica) 80.0 0.0 true true 0 (New plot and data collected for 2010-2019 by K. Rupp)] +] -26.7 MLshow +/Helvetica findfont 140 scalefont setfont +1.500 UL +LTb +LCb setrgbcolor +LCb setrgbcolor +2492 347 M +[ [(Helvetica) 140.0 0.0 true true 0 (Year)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +LTb +LCb setrgbcolor +2492 3572 M +[ [(Helvetica) 140.0 0.0 true true 0 (48 Years of Microprocessor Trend Data)] +] -46.7 MCshow +/Helvetica findfont 140 scalefont setfont +LTb +% Begin plot #1 +1.000 UP +1.000 UL +LTb +0.00 0.00 0.00 C +537 919 DiaF +569 919 DiaF +740 919 DiaF +1191 919 DiaF +1419 919 DiaF +1724 919 DiaF +1752 919 DiaF +1956 919 DiaF +2025 919 DiaF +2118 919 DiaF +2269 919 DiaF +2297 919 DiaF +2322 919 DiaF +2358 919 DiaF +2468 919 DiaF +2529 919 DiaF +2558 919 DiaF +2586 919 DiaF +2619 919 DiaF +2651 919 DiaF +2684 919 DiaF +2700 919 DiaF +2720 919 DiaF +2818 919 DiaF +2846 919 DiaF +2875 919 DiaF +2932 919 DiaF +2972 919 DiaF +3009 919 DiaF +3054 919 DiaF +3066 919 DiaF +3115 919 DiaF +3147 919 DiaF +3163 919 DiaF +3196 919 DiaF +3212 919 DiaF +3229 919 DiaF +3322 1014 DiaF +3326 919 DiaF +3399 1014 DiaF +3407 919 DiaF +3420 1205 DiaF +3428 1014 DiaF +3493 1014 DiaF +3513 1014 DiaF +3562 1110 DiaF +3570 1222 DiaF +3570 1014 DiaF +3582 1014 DiaF +3590 1205 DiaF +3607 1110 DiaF +3631 1014 DiaF +3692 1070 DiaF +3696 1110 DiaF +3716 1110 DiaF +3729 1070 DiaF +3737 1205 DiaF +3737 1166 DiaF +3777 1301 DiaF +3859 1261 DiaF +3873 1332 DiaF +3922 1205 DiaF +3964 1301 DiaF +3965 1301 DiaF +3990 1396 DiaF +4006 1301 DiaF +4049 1674 DiaF +4083 1357 DiaF +4113 1388 DiaF +4142 1492 DiaF +4167 1301 DiaF +4168 1357 DiaF +4169 1413 DiaF +4297 1440 DiaF +4311 1691 DiaF +4325 1548 DiaF +4396 1492 DiaF +4402 1440 DiaF +4403 1474 DiaF +4472 1536 DiaF +4480 1523 DiaF +4548 1474 DiaF +4590 1588 DiaF +% End plot #1 +% Begin plot #2 +1.000 UP +1.000 UL +LTb +0.00 0.53 0.00 C +537 870 BoxF +569 826 BoxF +744 1016 BoxF +1187 1142 BoxF +1419 1168 BoxF +1724 1302 BoxF +1752 1302 BoxF +1956 1428 BoxF +2025 1361 BoxF +2118 1402 BoxF +2273 1495 BoxF +2297 1484 BoxF +2297 1555 BoxF +2326 1648 BoxF +2358 1499 BoxF +2358 1428 BoxF +2468 1611 BoxF +2468 1703 BoxF +2529 1703 BoxF +2553 1540 BoxF +2586 1648 BoxF +2606 1648 BoxF +2614 1540 BoxF +2647 1778 BoxF +2692 1681 BoxF +2700 1785 BoxF +2708 1670 BoxF +2716 1703 BoxF +2818 1774 BoxF +2842 1703 BoxF +2846 1744 BoxF +2871 1763 BoxF +2871 1778 BoxF +2932 1830 BoxF +2972 1871 BoxF +3009 1856 BoxF +3017 1968 BoxF +3058 1841 BoxF +3066 1919 BoxF +3119 1982 BoxF +3151 1953 BoxF +3159 1871 BoxF +3204 1893 BoxF +3212 1979 BoxF +3220 1953 BoxF +3322 2005 BoxF +3322 1960 BoxF +3326 2049 BoxF +3399 2031 BoxF +3411 2012 BoxF +3420 1897 BoxF +3424 1982 BoxF +3497 2049 BoxF +3497 2005 BoxF +3509 2008 BoxF +3513 1986 BoxF +3562 2020 BoxF +3570 2083 BoxF +3570 2064 BoxF +3578 1968 BoxF +3590 1919 BoxF +3607 1968 BoxF +3607 1986 BoxF +3631 2023 BoxF +3692 1997 BoxF +3700 2034 BoxF +3712 2005 BoxF +3733 2005 BoxF +3737 2034 BoxF +3777 1986 BoxF +3859 2042 BoxF +3873 1991 BoxF +3922 2022 BoxF +3964 2027 BoxF +3965 2018 BoxF +3990 2051 BoxF +4006 1997 BoxF +4049 1896 BoxF +4083 2008 BoxF +4113 2013 BoxF +4142 2051 BoxF +4167 2031 BoxF +4168 2003 BoxF +4169 1986 BoxF +4297 1979 BoxF +4311 1927 BoxF +4325 2062 BoxF +4396 1979 BoxF +4402 1973 BoxF +4403 1997 BoxF +4472 2039 BoxF +4480 1896 BoxF +4548 2008 BoxF +4590 1983 BoxF +% End plot #2 +% Begin plot #3 +1.000 UP +1.000 UL +LTb +0.00 0.00 0.73 C +1956 1529 CircleF +2025 1458 CircleF +2122 1473 CircleF +2273 1540 CircleF +2297 1633 CircleF +2297 1692 CircleF +2326 1715 CircleF +2358 1674 CircleF +2472 1726 CircleF +2472 1800 CircleF +2529 1875 CircleF +2553 1748 CircleF +2590 1860 CircleF +2590 1867 CircleF +2606 1815 CircleF +2606 1915 CircleF +2651 1953 CircleF +2692 1904 CircleF +2700 1949 CircleF +2712 1845 CircleF +2716 1923 CircleF +2822 2046 CircleF +2846 1986 CircleF +2846 1889 CircleF +2871 2008 CircleF +2875 1956 CircleF +2932 2038 CircleF +2972 2087 CircleF +3009 2105 CircleF +3017 2124 CircleF +3058 2072 CircleF +3066 2124 CircleF +3119 2179 CircleF +3155 2168 CircleF +3159 2179 CircleF +3204 2191 CircleF +3212 2206 CircleF +3224 2228 CircleF +3322 2276 CircleF +3322 2258 CircleF +3322 2291 CircleF +3403 2261 CircleF +3411 2291 CircleF +3497 2276 CircleF +3501 2291 CircleF +3505 2362 CircleF +3513 2306 CircleF +3574 2347 CircleF +3578 2235 CircleF +3607 2287 CircleF +3702 2367 CircleF +3719 2291 CircleF +3736 2371 CircleF +3787 2386 CircleF +3803 2319 CircleF +3859 2398 CircleF +3873 2376 CircleF +3922 2353 CircleF +3964 2344 CircleF +3965 2433 CircleF +4006 2353 CircleF +4083 2433 CircleF +4113 2433 CircleF +4167 2448 CircleF +4168 2446 CircleF +4169 2448 CircleF +4297 2464 CircleF +4402 2471 CircleF +4403 2481 CircleF +4548 2492 CircleF +4590 2472 CircleF +% End plot #3 +% Begin plot #4 +1.000 UP +1.000 UL +LTb +0.80 0.40 0.00 C +537 1034 TriUF +573 1094 TriUF +744 1168 TriUF +1187 1384 TriUF +1419 1596 TriUF +1724 1692 TriUF +1752 1566 TriUF +1956 1581 TriUF +2025 1897 TriUF +2118 1897 TriUF +2273 1897 TriUF +2297 2027 TriUF +2297 1886 TriUF +2326 1945 TriUF +2358 2027 TriUF +2358 1860 TriUF +2468 1960 TriUF +2468 2012 TriUF +2529 2183 TriUF +2553 2027 TriUF +2590 2105 TriUF +2606 2135 TriUF +2606 2049 TriUF +2614 2072 TriUF +2647 2183 TriUF +2692 2105 TriUF +2700 2046 TriUF +2708 2172 TriUF +2716 2150 TriUF +2822 2246 TriUF +2842 2179 TriUF +2846 2139 TriUF +2871 2179 TriUF +2871 2295 TriUF +2932 2298 TriUF +2972 2332 TriUF +2972 2369 TriUF +3009 2336 TriUF +3017 2388 TriUF +3058 2317 TriUF +3070 2369 TriUF +3119 2425 TriUF +3151 2373 TriUF +3159 2615 TriUF +3204 2563 TriUF +3212 2421 TriUF +3224 2514 TriUF +3322 2536 TriUF +3322 2514 TriUF +3322 2644 TriUF +3399 2622 TriUF +3407 2522 TriUF +3420 2659 TriUF +3428 2525 TriUF +3497 2689 TriUF +3497 2566 TriUF +3501 2629 TriUF +3505 2656 TriUF +3505 2748 TriUF +3513 2563 TriUF +3562 2748 TriUF +3570 2622 TriUF +3574 2793 TriUF +3578 2525 TriUF +3590 2730 TriUF +3611 2711 TriUF +3631 2700 TriUF +3692 2715 TriUF +3700 2789 TriUF +3733 2938 TriUF +3737 2912 TriUF +3777 2700 TriUF +3794 2860 TriUF +3859 2844 TriUF +3873 2955 TriUF +3922 2848 TriUF +3964 2944 TriUF +3965 2938 TriUF +3990 2925 TriUF +4006 2848 TriUF +4049 3045 TriUF +4083 3024 TriUF +4113 3024 TriUF +4142 3021 TriUF +4167 2955 TriUF +4168 3007 TriUF +4169 3063 TriUF +4297 3095 TriUF +4325 3109 TriUF +4396 3230 TriUF +4472 3109 TriUF +4480 3243 TriUF +4548 3109 TriUF +4590 3330 TriUF +% End plot #4 +% Begin plot #5 +1.000 UP +1.000 UL +LTb +0.73 0.00 0.00 C +537 807 TriDF +573 800 TriDF +744 908 TriDF +1187 993 TriDF +1419 1071 TriDF +1724 978 TriDF +1752 1071 TriDF +1956 1108 TriDF +2025 1060 TriDF +2118 1090 TriDF +2273 1164 TriDF +2297 1287 TriDF +2326 1410 TriDF +2358 1071 TriDF +2358 1276 TriDF +2468 1380 TriDF +2468 1071 TriDF +2529 1458 TriDF +2553 1302 TriDF +2590 1402 TriDF +2602 1391 TriDF +2606 1239 TriDF +2614 1254 TriDF +2651 1439 TriDF +2692 1361 TriDF +2700 1413 TriDF +2708 1309 TriDF +2716 1399 TriDF +2822 1540 TriDF +2846 1387 TriDF +2846 1283 TriDF +2871 1309 TriDF +2871 1339 TriDF +2932 1413 TriDF +2972 1454 TriDF +2972 1332 TriDF +3009 1506 TriDF +3017 1510 TriDF +3058 1551 TriDF +3070 1477 TriDF +3119 1454 TriDF +3155 1488 TriDF +3159 1551 TriDF +3204 1614 TriDF +3212 1514 TriDF +3224 1536 TriDF +3322 1536 TriDF +3322 1573 TriDF +3326 1555 TriDF +3399 1588 TriDF +3407 1532 TriDF +3420 1510 TriDF +3428 1361 TriDF +3497 1588 TriDF +3501 1495 TriDF +3501 1584 TriDF +3505 1514 TriDF +3513 1395 TriDF +3562 1592 TriDF +3574 1555 TriDF +3582 1395 TriDF +3590 1532 TriDF +3607 1518 TriDF +3611 1547 TriDF +3631 1495 TriDF +3692 1547 TriDF +3700 1592 TriDF +3716 1584 TriDF +3725 1547 TriDF +3733 1592 TriDF +3794 1625 TriDF +3859 1590 TriDF +3873 1590 TriDF +3922 1546 TriDF +3964 1600 TriDF +3965 1590 TriDF +3990 1649 TriDF +4006 1573 TriDF +4049 1705 TriDF +4083 1590 TriDF +4113 1614 TriDF +4142 1649 TriDF +4167 1595 TriDF +4168 1595 TriDF +4169 1600 TriDF +4297 1605 TriDF +4311 1677 TriDF +4396 1634 TriDF +4402 1600 TriDF +4403 1652 TriDF +4472 1642 TriDF +4480 1680 TriDF +4548 1652 TriDF +4590 1665 TriDF +% End plot #5 +2.000 UL +LTb +LCb setrgbcolor +1.500 UL +LTB +LCb setrgbcolor +378 3362 N +378 697 L +4229 0 V +0 2665 V +-4229 0 V +Z stroke +1.000 UP +1.500 UL +LTb +LCb setrgbcolor +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/48yrs/48-years-processor-trend.pdf b/48yrs/48-years-processor-trend.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6b14c8deffafe05f748d9025c6ec4743015daf95 GIT binary patch literal 17287 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�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 literal 0 HcmV?d00001 diff --git a/48yrs/48-years-processor-trend.png b/48yrs/48-years-processor-trend.png new file mode 100644 index 0000000000000000000000000000000000000000..0b42a05b5aa804b81405e31d101865bee0afb786 GIT binary patch literal 67149 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 literal 0 HcmV?d00001 diff --git a/48yrs/cores.dat b/48yrs/cores.dat new file mode 100644 index 0000000..5a89c09 --- /dev/null +++ b/48yrs/cores.dat @@ -0,0 +1,84 @@ +1971.875 1 +1972.25961538 1 +1974.27884615 1 +1979.61538462 1 +1982.30769231 1 +1985.91346154 1 +1986.25 1 +1988.65384615 1 +1989.47115385 1 +1990.57692308 1 +1992.35576923 1 +1992.69230769 1 +1992.98076923 1 +1993.41346154 1 +1994.71153846 1 +1995.43269231 1 +1995.76923077 1 +1996.10576923 1 +1996.49038462 1 +1996.875 1 +1997.25961538 1 +1997.45192308 1 +1997.69230769 1 +1998.84615385 1 +1999.18269231 1 +1999.51923077 1 +2000.19230769 1 +2000.67307692 1 +2001.10576923 1 +2001.63461538 1 +2001.77884615 1 +2002.35576923 1 +2002.74038462 1 +2002.93269231 1 +2003.31730769 1 +2003.50961538 1 +2003.70192308 1 +2004.80769231 2 +2004.85576923 1 +2005.72115385 2 +2005.81730769 1 +2005.96153846 8 +2006.05769231 2 +2006.82692308 2 +2007.06730769 2 +2007.64423077 4 +2007.74038462 9 +2007.74038462 2 +2007.88461538 2 +2007.98076923 8 +2008.17307692 4 +2008.46153846 2 +2009.18269231 3 +2009.23076923 4 +2009.47115385 4 +2009.61538462 3 +2009.71153846 8 +2009.71153846 6 +2010.19230769 16 +#### +2011.16 12 +2011.32 20 +2011.9 8 +2012.40 16 +2012.41 16 +2012.7 32 +2012.9 16 +2013.4 240 +2013.8 24 +2014.16 30 +2014.5 64 +2014.8 16 +2014.81 24 +2014.82 36 +2016.33 44 +2016.5 272 +2016.67 96 +2017.5 64 +2017.58 44 +2017.59 56 +2018.4 88 +2018.5 80 +2019.3 56 +2019.8 128 \ No newline at end of file diff --git a/48yrs/frequency.dat b/48yrs/frequency.dat new file mode 100644 index 0000000..8eb750c --- /dev/null +++ b/48yrs/frequency.dat @@ -0,0 +1,95 @@ +1971.875 0.704135515486 +1972.25961538 0.509367521678 +1974.32692308 2.01691455473 +1979.56730769 5.04806571667 +1982.30769231 6.09756235221 +1985.91346154 16.1076153462 +1986.25 16.1076153462 +1988.65384615 40.3151936286 +1989.47115385 24.8045441431 +1990.57692308 33.3762469429 +1992.40384615 65.5248823737 +1992.69230769 60.4296390238 +1992.69230769 100.903504484 +1993.02884615 198.095677855 +1993.41346154 67.3170382414 +1993.41346154 40.3151936286 +1994.71153846 151.247254531 +1994.71153846 296.93148482 +1995.43269231 296.93148482 +1995.72115385 90.5797775943 +1996.10576923 198.095677855 +1996.34615385 198.095677855 +1996.44230769 90.5797775943 +1996.82692308 509.367521678 +1997.35576923 252.547893258 +1997.45192308 537.611747456 +1997.54807692 232.909659246 +1997.64423077 296.93148482 +1998.84615385 495.806824168 +1999.13461538 296.93148482 +1999.18269231 399.542055895 +1999.47115385 457.252669897 +1999.47115385 509.367521678 +2000.19230769 743.179548784 +2000.67307692 1000 +2001.10576923 897.687132447 +2001.20192308 2016.91455473 +2001.68269231 805.842187761 +2001.77884615 1420.18116969 +2002.40384615 2246.79009181 +2002.78846154 1810.55824303 +2002.88461538 1000 +2003.41346154 1175.74326592 +2003.50961538 2186.97465501 +2003.60576923 1810.55824303 +2004.80769231 2641.64832039 +2004.80769231 1910.95297497 +2004.85576923 3651.74127255 +2005.72115385 3190.84898063 +2005.86538462 2788.12666541 +2005.96153846 1207.90074743 +2006.00961538 2246.79009181 +2006.875 3651.74127255 +2006.875 2641.64832039 +2007.01923077 2713.89943121 +2007.06730769 2308.24152676 +2007.64423077 2942.72717621 +2007.74038462 4655.52593116 +2007.74038462 4067.94432108 +2007.83653846 2016.91455473 +2007.98076923 1420.18116969 +2008.17307692 2016.91455473 +2008.17307692 2308.24152676 +2008.46153846 3023.21302502 +2009.18269231 2502.86543117 +2009.27884615 3278.12115139 +2009.42307692 2641.64832039 +2009.66346154 2641.64832039 +2009.71153846 3278.12115139 +2010.19230769 2308.24152676 +#### +2011.16 3470 +2011.32 2400 +2011.9 3000 +2012.40 3100 +2012.41 2900 +2012.7 3700 +2012.9 2500 +2013.4 1200 +2013.8 2700 +2014.16 2800 +2014.5 3700 +2014.8 3200 +2014.81 2600 +2014.82 2300 +2016.33 2200 +2016.5 1500 +2016.67 4000 +2017.5 2200 +2017.58 2100 +2017.59 2500 +2018.4 3400 +2018.5 1200 +2019.3 2700 +2019.8 2250 \ No newline at end of file diff --git a/48yrs/plot.gnuplot b/48yrs/plot.gnuplot new file mode 100644 index 0000000..254bb19 --- /dev/null +++ b/48yrs/plot.gnuplot @@ -0,0 +1,56 @@ + + +set terminal postscript eps color enhanced #font 'CourierBold,14' +set output "48-years-processor-trend.eps" + +set rmargin at screen 0.64 + +set style line 1 lt 1 ps 1 pt 13 lc rgb "#000000" +set style line 2 lt 1 ps 1 pt 5 lc rgb "#008800" +set style line 3 lt 1 ps 1 pt 7 lc rgb "#0000BB" +set style line 4 lt 1 ps 1 pt 9 lc rgb "#CC6600" +set style line 5 lt 1 ps 1 pt 11 lc rgb "#BB0000" + + +set size 0.8 +set size ratio 0.63 + +set border lw 1.5 + +set xlabel "Year" + +set grid +unset key +set logscale y +set format y "10^{%T}" + +set xrange [1970:2020] +set yrange [0.2:5e7] +unset mytics + +set label "Number of" at 2021,2e1 tc ls 1 +set label "Logical Cores" at 2021,6.6e0 tc ls 1 + +set label "Frequency (MHz)" at 2021,3e3 tc ls 2 + +set label "Single-Thread" at 2021,1.5e5 tc ls 3 +set label "Performance" at 2021,5e4 tc ls 3 +set label "(SpecINT x 10^{3})" at 2021,1.9e4 tc ls 3 + +set label "Transistors" at 2021,6e6 tc ls 4 +set label "(thousands)" at 2021,2e6 tc ls 4 + +set label "Typical Power" at 2021,3e2 tc ls 5 +set label "(Watts)" at 2021,1e2 tc ls 5 + +set title "48 Years of Microprocessor Trend Data" + +set label "Original data up to the year 2010 collected and plotted by M. Horowitz, F. Labonte, O. Shacham, K. Olukotun, L. Hammond, and C. Batten" at 1970,6e-3 tc ls 1 font ",8" +set label "New plot and data collected for 2010-2019 by K. Rupp" at 1970,3e-3 tc ls 1 font ",8" + +plot \ + "cores.dat" using 1:2 ls 1 with points, \ + "frequency.dat" using 1:2 ls 2 with points, \ + "specint.dat" using 1:2 ls 3 with points, \ + "transistors.dat" using 1:2 ls 4 with points, \ + "watts.dat" using 1:2 ls 5 with points diff --git a/48yrs/specint.dat b/48yrs/specint.dat new file mode 100644 index 0000000..cface2c --- /dev/null +++ b/48yrs/specint.dat @@ -0,0 +1,73 @@ +1988.65384615 83.5362546958 +1989.47115385 50.0286461058 +1990.625 55.7306040127 +1992.40384615 90.5797775943 +1992.69230769 177.827941004 +1992.69230769 273.841963426 +1993.02884615 321.967844425 +1993.41346154 239.279917343 +1994.75961538 349.115193717 +1994.75961538 598.885433492 +1995.43269231 1027.35076818 +1995.72115385 410.469838044 +1996.15384615 922.239565104 +1996.15384615 973.377380904 +1996.34615385 667.142718041 +1996.34615385 1382.37222736 +1996.875 1810.55824303 +1997.35576923 1274.87836177 +1997.45192308 1762.35644057 +1997.59615385 827.882590628 +1997.64423077 1459.02421563 +1998.89423077 3554.52235561 +1999.18269231 2308.24152676 +1999.18269231 1144.4419008 +1999.47115385 2713.89943121 +1999.51923077 1860.07840181 +2000.19230769 3367.78028307 +2000.67307692 4782.85814165 +2001.10576923 5473.70326288 +2001.20192308 6264.33536657 +2001.68269231 4293.51021008 +2001.77884615 6264.33536657 +2002.40384615 9389.79801048 +2002.83653846 8659.6432336 +2002.88461538 9389.79801048 +2003.41346154 10181.5172172 +2003.50961538 11341.944035 +2003.65384615 13335.2143216 +2004.80769231 18938.4202733 +2004.80769231 16548.1709994 +2004.80769231 21096.9051341 +2005.76923077 17000.7761882 +2005.86538462 21096.9051341 +2006.875 18938.4202733 +2006.92307692 21096.9051341 +2006.97115385 35226.9465147 +2007.06730769 23501.4008461 +2007.78846154 31622.7766017 +2007.83653846 14074.6466334 +2008.17307692 20535.2502646 +#### +2009.3 36600 # Xeon W5580 +2009.5 21100 # Opteron 2435 +2009.7 37700 # Xeon W5590 +2010.3 42000 # Xeon X5680 +2010.5 25800 # Opteron 4184 +#### +2011.16 46000.7 +2011.32 39000.4 +2011.9 33000.6 +2012.40 31000.8 +2012.41 59000.0 +2012.9 33000.7 +2013.8 59000.6 +2014.16 59000.9 +2014.8 66000.4 +2014.81 65000.4 +2014.82 66000.1 +2016.33 73900.2 +2017.58 77900.2 +2017.59 83600.3 +2019.3 90900.2 +2019.8 78300.4 \ No newline at end of file diff --git a/48yrs/transistors.dat b/48yrs/transistors.dat new file mode 100644 index 0000000..64354f9 --- /dev/null +++ b/48yrs/transistors.dat @@ -0,0 +1,95 @@ +1971.875 2.30824152676 +1972.30769231 3.55452235561 +1974.32692308 6.09756235221 +1979.56730769 29.1637757405 +1982.30769231 135.772714211 +1985.91346154 273.841963426 +1986.25 109.411381058 +1988.65384615 121.881418484 +1989.47115385 1207.90074743 +1990.57692308 1207.90074743 +1992.40384615 1207.90074743 +1992.69230769 3105.90022362 +1992.69230769 1113.97385999 +1993.02884615 1715.43789634 +1993.41346154 3105.90022362 +1993.41346154 922.239565104 +1994.71153846 1910.95297497 +1994.71153846 2788.12666541 +1995.43269231 9646.61619911 +1995.72115385 3105.90022362 +1996.15384615 5473.70326288 +1996.34615385 6792.52507006 +1996.34615385 3651.74127255 +1996.44230769 4293.51021008 +1996.82692308 9646.61619911 +1997.35576923 5473.70326288 +1997.45192308 3554.52235561 +1997.54807692 8896.4911282 +1997.64423077 7566.6953714 +1998.89423077 15261.3780258 +1999.13461538 9389.79801048 +1999.18269231 6978.3058486 +1999.47115385 9389.79801048 +1999.47115385 21673.9216957 +2000.19230769 22266.7201035 +2000.67307692 28387.3596476 +2000.67307692 37180.2666391 +2001.10576923 29163.7757405 +2001.20192308 42550.6550247 +2001.68269231 25482.9674798 +2001.82692308 37180.2666391 +2002.40384615 55730.6040127 +2002.78846154 38197.1754928 +2002.88461538 220673.406908 +2003.41346154 151247.254531 +2003.50961538 54246.9093701 +2003.65384615 106498.563535 +2004.80769231 125214.968907 +2004.80769231 106498.563535 +2004.80769231 273841.963426 +2005.72115385 232909.659246 +2005.81730769 112403.866377 +2005.96153846 305052.789027 +2006.05769231 115478.198469 +2006.875 378551.524926 +2006.875 155383.983127 +2006.92307692 245824.406892 +2006.97115385 296931.48482 +2006.97115385 582941.534714 +2007.06730769 151247.254531 +2007.64423077 582941.534714 +2007.74038462 232909.659246 +2007.78846154 805842.187761 +2007.83653846 115478.198469 +2007.98076923 509367.521678 +2008.22115385 445079.406236 +2008.46153846 410469.838044 +2009.18269231 457252.669897 +2009.27884615 784388.558145 +2009.66346154 2308241.52676 +2009.71153846 1910952.97497 +2010.19230769 410469.838044 +2010.38461538 1309747.2643 +#### +2011.16 1170000 +2011.32 2600000 +2011.9 1200000 +2012.40 2400000 +2012.41 2300000 +2012.7 2100000 +2012.9 1200000 +2013.4 5000000 +2013.8 4300000 +2014.16 4300000 +2014.5 4200000 +2014.8 2600000 +2014.81 3800000 +2014.82 5700000 +2016.33 7200000 +2016.67 8000000 +2017.5 19200000 +2018.4 8000000 +2018.5 21100000 +2019.3 8000000 +2019.8 39500000 \ No newline at end of file diff --git a/48yrs/watts.dat b/48yrs/watts.dat new file mode 100644 index 0000000..17cec97 --- /dev/null +++ b/48yrs/watts.dat @@ -0,0 +1,95 @@ +1971.875 0.445079406236 +1972.30769231 0.421696503429 +1974.32692308 0.922239565104 +1979.56730769 1.71543789634 +1982.30769231 3.02321302502 +1985.91346154 1.53992652606 +1986.25 3.02321302502 +1988.65384615 3.95964498892 +1989.47115385 2.78812666541 +1990.57692308 3.45989166087 +1992.40384615 5.9352292723 +1992.69230769 14.4595990307 +1993.02884615 35.2269465147 +1993.41346154 3.02321302502 +1993.41346154 13.3352143216 +1994.71153846 28.3873596476 +1994.71153846 3.02321302502 +1995.43269231 50.0286461058 +1995.72115385 16.1076153462 +1996.15384615 33.3762469429 +1996.29807692 30.7808954655 +1996.34615385 10.1815172172 +1996.44230769 11.341944035 +1996.875 43.7144481261 +1997.35576923 24.8045441431 +1997.45192308 36.1904305625 +1997.54807692 17.0007761882 +1997.64423077 32.4876838337 +1998.89423077 90.5797775943 +1999.18269231 29.96142741 +1999.18269231 14.0746466334 +1999.47115385 17.0007761882 +1999.47115385 21.0969051341 +2000.19230769 36.1904305625 +2000.67307692 48.6967525166 +2000.67307692 19.9885481187 +2001.10576923 71.0497411443 +2001.20192308 72.9930061435 +2001.68269231 98.2171889188 +2001.82692308 57.2548788436 +2002.40384615 48.6967525166 +2002.83653846 62.0824360719 +2002.88461538 98.2171889188 +2003.41346154 155.383983127 +2003.50961538 74.9894209332 +2003.65384615 88.1683066776 +2004.80769231 88.1683066776 +2004.80769231 115.478198469 +2004.85576923 100.903504484 +2005.72115385 128.639694494 +2005.81730769 85.8210354325 +2005.96153846 72.9930061435 +2006.05769231 24.8045441431 +2006.875 128.639694494 +2006.92307692 65.5248823737 +2006.92307692 125.214968907 +2006.97115385 74.9894209332 +2007.06730769 31.6227766017 +2007.64423077 132.158088956 +2007.78846154 100.903504484 +2007.88461538 31.6227766017 +2007.98076923 85.8210354325 +2008.17307692 77.0404392011 +2008.22115385 95.6023901095 +2008.46153846 65.5248823737 +2009.18269231 95.6023901095 +2009.27884615 132.158088956 +2009.47115385 125.214968907 +2009.56730769 95.6023901095 +2009.66346154 132.158088956 +2010.38461538 168.485487944 +#### +2011.16 130 +2011.32 130 +2011.9 95 +2012.40 140 +2012.41 130 +2012.7 200 +2012.9 115 +2013.4 300 +2013.8 130 +2014.16 155 +2014.5 200 +2014.8 135 +2014.81 135 +2014.82 140 +2016.33 145 +2016.5 245 +2017.5 180 +2017.58 140 +2017.59 205 +2018.4 190 +2018.5 250 +2019.3 205 +2019.8 225 diff --git a/README.md b/README.md index b02390f..e6fe51d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ This repository contains the raw data used in my blog series on microprocessor trend data: + * [48 Years of Microprocessor Trend Data](https://www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/) + ![48 Years of Microprocessor Trend Data Chart](https://github.com/karlrupp/microprocessor-trend-data/blob/master/48yrs/48-years-processor-trend.png?raw=true) * [42 Years of Microprocessor Trend Data](https://www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/) * [40 Years of Microprocessor Trend Data](https://www.karlrupp.net/2015/06/40-years-of-microprocessor-trend-data/) diff --git a/newdata.txt b/newdata.txt index 5cb1822..13cfa3c 100644 --- a/newdata.txt +++ b/newdata.txt @@ -1,9 +1,13 @@ -# Processors added to the comparison +# Processors added to the comparison (data prior to 2011 was extracted with g3data from the original '35 years ...' plot) # Threads := No. of logical cores (SMT threads counted separately) # # Intel (see http://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors#Nehalem-based_Xeons) # AMD (see http://www.techarp.com/showarticle.aspx?artno=354&pgno=2) # +# Note on SpecInt results: +# Data up to 2017 from SpecINT 2006 database at https://www.spec.org/cpu2006/results/ +# Data after 2017 from SpecINT 2017 database at https://www.spec.org/cpu2017/results/, converted by a factor of 9.0 (empirically determined by comparing results for Xeon Platinum 8180) +# # Name Year Trans.(10^9) SpecInt Freq (GHz) TDP Threads Notes Xeon X5690 2011.02 1.17 46.7 3.47 130 12 # http://www.anandtech.com/show/5553/the-xeon-e52600-dual-sandybridge-for-servers/2 Xeon E7-8870 2011.04 2.6 39.4 2.4 130 20 @@ -24,4 +28,8 @@ Xeon Phi 7290 2016.06 ?? ?? 1.5 245 272 Power8 2016.08 8.0 ?? 4.0 ?? 96 # Freq. approximate, TDP unknown Epyc 7601 2017.06 19.2 ?? 2.2 180 64 Xeon Gold 6152 2017.07 ?? 77.9 2.1 140 44 -Xeon Pl. 8180 2017.07 ?? 83.6 2.5 205 56 +Xeon Pl. 8180 2017.07 ?? 83.6 2.5 205 56 # SpecInt 2017: 9.31 +Power9 AC922 2018.04 8.0 ?? 3.4 190 88 # TDP taken from comparable Power9 processors +Quadro GV100 2018.05 21.1 ?? 1.2 250 80 # GPU; 80 SMs +Xeon Pl. 8280 2019.03 8.0 90.9 2.7 205 56 # SpecInt 2017: 10.1 +Epyc 7742 2019.08 39.5 78.3 2.25 225 128 # SpecInt 2017: 8.7