# Moore's Law and the Future of GPUs

September 14, 2019

In 1975, Intel CEO Gordon Moore observed that the number of transistors in a CPU doubles every two years. The trend continues to this day, and the phenomenon has been dubbed Moore's Law.

But how well does Moore's Law apply to GPUs?

In this post we'll use R to explore data on the history of GPUs to see if we can answer this question.

library(tidyverse)
library(ggdark)

select(year = date_of_introduction, company = designer_s, transistors = transistor_count) %>%
filter(!is.na(year))

gpu
# A tibble: 110 x 3
year company      transistors
<dbl> <chr>              <dbl>
1  1982 NEC                40000
2  1984 Hitachi            60000
3  1988 Sega              100000
4  1993 Flare             750000
5  1994 Sega             1000000
6  1994 Toshiba          1000000
7  1995 Nvidia, Sega     1000000
8  1996 SGI              2600000
9  1996 VideoLogic       1200000
10  1996 3dfx             1000000
# … with 100 more rows

gpu %>%
pull(company) %>%
unique()
 [1] "NEC"                "Hitachi"            "Sega"
[4] "Flare"              "Toshiba"            "Nvidia, Sega"
[7] "SGI"                "VideoLogic"         "3dfx"
[10] "Nvidia"             "Intel, Real3D"      "ATI"
[13] "Sony, Toshiba"      "ArtX"               "Imagination"
[16] "Nvidia, Sony"       "AMD (formerly ATI)" "AMD" 

Today the only two GPU makers are Nvidia and AMD, which acquired ATI in 2006. For the sake of simplicity, let's restrict our attention to these two companies.

company_recodes <- c(
"AMD" ="AMD (or ATI, acquired by AMD in 2006)",
"AMD (formerly ATI)" = "AMD (or ATI, acquired by AMD in 2006)",
"ATI" = "AMD (or ATI, acquired by AMD in 2006)",
"Nvidia, Sega" = "Nvidia",
"Nvidia, Sony" = "Nvidia"
)

gpu <- gpu %>%
mutate(company = recode(company, !!! company_recodes)) %>%
filter(company %in% unique(company_recodes)) %>%
mutate(company = fct_relevel(company, rev(unique(company_recodes))))

We'll make a scatter plot with year on the x-axis, number of transistors on the y-axis, and points colored by company. Then we'll transform the y-axis with a log 2 scale, fit a linear regression line to the transformed data points, and see if we observe a doubling every year.

ggplot(gpu, aes(year, transistors)) +
geom_smooth(method = "lm", se = FALSE, color = "grey75", size = 0.5, alpha = 0.7) +
geom_point(aes(color = company, shape = company), size = 3, alpha = 0.8) +
scale_x_continuous(breaks = seq(1994, 2020, by = 2)) +
scale_y_continuous(trans = "log2", breaks = 2^(20:35), labels = parse(text = glue::glue("2^{20:35}"))) +
scale_shape_manual(values = c(17, 16, 18)) +
scale_color_manual(values = c( "#82B135", "#CC2D3B")) +
labs(title = "Moore's Law and the Future of GPUs",
subtitle = "Today, Nvidia and AMD (which acquired ATI in 2006) are the only two makers of graphics processing units (GPUs).\nThe two companies have kept pace with Moore's Law, which asserts the number of transistors in a circuit will\ndouble every two years. But with circuits approaching only several nanometers in size, when will Moore's Law\nfinally break? And which company will forge a new path forward?",
x = NULL, y = NULL, color = NULL, shape = NULL, caption = "Source: \"Transistor count\" Wikipedia | Graphic: nsgrantham.com/moores-law") +
dark_theme_minimal(base_family = "Fira Sans Extra Condensed Light", base_size = 18) +
theme(legend.position = c(0.25, 0.9),
plot.title = element_text(family = "Fira Sans Extra Condensed", size = 22),
plot.subtitle = element_text(size = 12),
plot.background = element_rect(color = "grey10", fill = "grey10"),
plot.margin = unit(c(1, 1, 1, 1), "lines"),
panel.grid.major = element_line(color = "grey20", size = 0.5),
panel.grid.minor = element_blank())

ggsave("moores-law.png", width = 8, height = 10)

The trend line sure looks like Moore's Law to me! I wonder how long it will continue to hold, and when it doesn't, which company will forge a new path forward?