MCM: многокристальная компоновка
Микроэлектроника славится большим количеством оригинальных, странных и эффективных инженерных решений. Одно из них — многокристальная компоновка, что так или иначе встречается практически повсеместно — от высокопроизводительных рабочих станций до ультрапортативных ноутбуков, от одноплатных компьютеров за 10$ до мэйнфреймов IBM.
Этот пост рассказывает о истории ее использования применительно к процессорам общего назначения.
Заранее предупреждаю: я не претендую на абсолютные знания и академичность изложения, рассказываю по большей части о том, с чем сталкивался, работал и держал в руках.
Traffic Warning! Под катом много картинок!
Что это?
MCM (Multi-chip module, многокристальный модуль) или MCP (Multi-chip package, многокристальная компоновка) — инженерное решение разнести функционал микросхемы на несколько чипов, объединенных в один корпус. От модулей отличается тем, что микросхемы обычно «голые», без компаунда, и припаяны напрямую кристаллами на плату. Используется для увеличения выхода годных чипов (уменьшая размер отдельного кристалла), компактного соединения кристаллов выполненных по разным техпроцессам и технологиям.
Ну что, начнем?
1995: Когда кэш ни в какие ворота не влазит
(aka Pentium Pro)
Кэш — штука жручая, габаритная и быстрая. Отсюда и вырастает парочка проблем: с повышением скорости его работы, узким местом становится пропускная способность его шины, да и он сам греться начинает. Надо как-то это исправлять. Самый логичный путь — перенести L2 в процессор, где уже давно пасется L1. Но есть проблема, и не одна: с увеличением размера кристалла увеличивается % брака чипов, причем едва ли не экспоненциально. Что делать? Конечно же делать кэш отдельным чипом, но поближе к основному. В итоге мы можем любоваться на сей кирпичик:
Решение хорошее, но порядочно усложнило корпусировку.
1997: А теперь на бис, хоть и не то же
(aka Pentium II)
Большой керамический корпус это, конечно, хорошо, но дорого. Попробуем переиграть? А почему бы и нет. Задача — сделать дешевле, причем все. Переносить кеш обратно на плату не вариант — это был бы шаг назад. Да и ширина шины кэша тоже выросла… Может объединить все вместе с охлаждением в один модуль? Так и родился Pentium II:
Можно, конечно, не считать это MCM, но раз уж я это вспомнил — будет тут.
(к слову, без этого бессменного и бессмертного старичка ваш покорный слуга и не писал бы эту статью — PII-400 который год работает мне шлюзом и WiFi-роутером, пережив многих своих потомков)
2005: Д — значит Дважды Дно
(aka Pentium D)
Когда план «Одно ядро, но ГНАТЬ!» ощутимо начал трещать по швам, а конкуренты, посмеиваясь, уже собирались выпускать двуядерные процессоры на одном кристалле, пришлось что-то делать, причем быстро. Так и появился сей атавизм, коим заткнули дырку на рынке, пока основные силы были брошены на более перспективную архитектуру «Core». Вероятно, главной причиной использования такого решения было именно сокращение времени на разработку — размер кристаллов был не настолько велик, чтобы его удвоение вызвало проблемы. Ну, тут уж как вышло:
Были и аналогичные процессоры Xeon для серверного сегмента, но про них я мало что могу сказать.
2007: А почему бы и да
(aka Core 2 Quad)
Раз мы осилили в 2006 двуядерные кристаллы, то зачем напрягаться? Используем проверенное временем решение — воткнем два кристала в один корпус и нет проблем! Говорить особо не о чем, картинка не сильно изменилась:
Xeon той эпохи тоже такими были, кроме шестиядерной модели — там один большой кристалл.
2010: До прихода песка
(aka first gen Core i3/5/7 )
На двуядерных процессорах Core i первого поколения решили обкатать 32 нм процесс, сделав довольно забавную вещь — на проверенном временем 45 нм процессе сделали интегрированное видеоядро и контроллер памяти, а на отдельном 32 нм кристалле разместилась пара ядер с кэшем. В то время как их старшие четырехядерные собратья использовали 45 нм процесс! Забавны так же и размеры кристаллов:
(Впрочем, видеоядро у двуядерных процессоров и сейчас часто больше чем оба ядра вместе взятые)
2011: Один бульдозер — хорошо, а два — лучше
(aka Opteron 6000)
Кристалл и так большой, технология их выпуска налажена, в чем, собственно, проблемы? NUMA? Но мы и так делаем эти процессоры для серверов, причем многосокетных. Раз проблем нет, собираем два кристала под одной крышкой:
(Ага, а потом людям весело — процессор один, а NUMA нод — две)
2013: Ириска, но несъедобная
(aka eDRAM L4 GPU/CPU cache)
С поколения Haswell процессоры оснащенные встроенной графикой Iris Pro/Iris Plus (а в поколении Skylake — и те, что с обычной Iris) идут в одном корпусе с 64/128МБ чипом памяти, работающим как L4 кэш и довольно серьезно поднимающим производительность встроенной графики. А чип-то не маленький (хотя память всегда много места занимает):
2017: Year when Intel shit brix
(aka Ryzen Threadripper & EPYC)
Игрались инженеры AMD с Infinity Fabric, игрались… А потом — упс! Четыре кристалла под одной крышкой соединенные с помощью IF каждый с каждым (в случае серверных EPYC) или пара между собой (Threadripper с двумя активными кристаллами). Все хорошо, одна только проблема — NUMA (аж 4 ноды на один процессор!), но проблемой она является исключительно для неприспособленного к ней софта. Так что вышло очень даже хорошо:
2018: Удваивая количество — удваиваем веселье
(aka Zen 2 & Cascade Lake AP)
Вот мы и добрались до текущих событий. 5 ноября Intel быстро анонсировала 48-ядерные двухкристальные процессоры (даже картинки не успели нафотошопить), а 6 ноября AMD на своем мероприятии Next Horizon показала новые EPYC. Тысячу слов заменит картинка:
Девять кристаллов. Девять, черт побери! Причины такого решения мне понятны, и они очень просты: ради повышения выхода целых чипов, понижения общей стоимости процессора и ускорения разработки. 7 нм — еще сырой процесс. Intel, с ее 10 нм (+- равен 7 нм процессу TSMC) уже от этого огребла. Да так, что 10 нм процессоры мы до сих пор в живую видели лишь в виде одной модели ноутбучного огрызка i3.
Центральный кристалл сделан на проверенном 14 нм процессе и работает контроллером памяти и всего ввода-вывода кроме PCIe 4.0, 16 линий которого обеспечивает каждый из кристаллов-сателлитов с восемью ядрами на каждом.
Один общий контроллер памяти обеспечивает главное — однородный доступ к памяти (UMA). А он никогда не будет лишним.
Время спекуляций
Центральный кристалл соединяется с сателлитами с помощью Infinity Fabric, что в свою очередь дает огромное количество возможностей использования компонент как вместе, так и по отдельности. Нужен десктопный процессор с 16 ядрами? Пилим кристалл с двухканальным контроллером памяти и соединяем с двумя ядерными комплексами под одной крышкой. Нужен процессор с встроенной графикой? Выкидываем один ядерный комплекс, вместо него ставим чип GPU. Затраты на расширение номенклатуры процессоров уменьшатся на порядок. А уменьшение размеров отдельных кристаллов уменьшает процент брака, что в свою очередь положительно сказывается на стоимости.
MOAR geek porn
Via Nano QuadCore, совсем про нее забыл. Дел с ней не имел, рассказывать нечего.
IBM CPU 9121/311
IBM Power 5
И боле новый Power 7
Микроконтроллер GD32, сверху чип flash-памяти. Фото от товарища BarsMonster
Автор: timdorohin