Унификация «железа»: эволюционный путь к MegaSoC
Человеческий мозг, по всей видимости, представляет из себя скорее набор децентрализованных P2P-отделов с достаточно перекрываемым функционалом, чем централизованную систему со строго выраженным делением.
Мозг - SoC?!
Очевидно, выраженные отделы мозга таки существуют, однако функции изрядно перемешаны. Таким образом, в вычислительном смысле органический мозг похож именно на нейронный процессор, коим он на самом деле и является.
Тем занимательнее, параллельно с развитием понимания устройства органических компьютеров, следить за эволюционным перемешиванием функций исполнительного IT-Hardware, о чём и пойдёт речь в данной статье.
Дисклеймер: данная статья не претендует на глубокое профильное погружение в упоминаемые аспекты, но призвана системно взглянуть на современные и грядущие тренды в классических ЭВМ.
Классическая вычислительная система
Практически все вычислительные машины в ретроспективе последнего полувека были устроены по принципу CPU+RAM+ROM (+GPU, чтобы "Hello world!" смог прочитать даже кожаный мешок своим визуальным восприятием).
Микро-ликбез для самых далёких от железа.
CPU (Central Processing Unit) - он же ЦП (Центральный Процессор)
Отвечает непосредственно за исполнение микрокода и генерацию запросов. Совершенно не должен ничего помнить.
RAM (Random Access Memory) - она же ОЗУ (Оперативное Запоминающее Устройство)
Быстрая, но кратковременная память, как раз необходимая чтобы ворочить [только текущие] "мысли" Центрального Процессора. Не должна уметь ничего считать и хранить данные после завершения обращения.
ROM (Read Only Memory) - она же ПЗУ (Постоянное Запоминающее Устройство)
Исторически долгая в обращении память, но умеющая в самом прямом смысле сохранять необходимую информацию на [условно] любой срок.
GPU (Graphic Processing Unit) - он же ГП (Графический Процессор)
Данный процессор принципиально идентичен Центральному, однако "заточен" под выполнение большого количества простых однотипных вычислений, что хорошо подходит для генерации видеосигнала. Так же как и ЦП, идейно не должен ничего помнить.
Однако, со стремительным развитием вычислительной техники и возлагаемых на неё задач, определённые мелкие операции стало проще выполнять "самому", а не тратить время и ресурсы на передачу данных дискретному узлу. Таким образом стали появляться гибридные чипы и, если некоторые из них для нас сегодня очевидны и понятны, то самые современные решения действительно заставляют радикально пересматривать структуру цикла вычислений, что должно отражаться и в оптимизации исполнительных команд.
Эволюция CPU в CPU+RAM+GPU
Первым гибридным чипом стал непосредственно CPU, приобретя внутреннюю кэш-память, буквально исполняющую роль микро-RAM SoC. По аналогии - это как выучить таблицу умножения и "запоминать" промежуточные вычисления без обращения к дополнительным ресурсам. Кэш память безупречно доказала свою эффективность и давно выросла с кб до десятков Мб, попутно обрастая новыми слоями (сначала появился L1, и только потом L2 и тем более L3). И именно благодаря успеху такой интеграции, инженеры стали активно "сближать" CPU с дискретной RAM (расширяя и ускоряя шину обращения к памяти).
Отличным примером интеграции дискретной RAM на сегодняшний день является микро-архитектура ZEN3, демонстрирующая зависимость производительности от частоты памяти аж до ~50%, что ещё лет 5 назад было на уровне единиц % и не представляло никакого практического значения.
И, конечно, говоря о гибридизации CPU - нельзя не упомянуть о внедрении GPU-ядер. Сегодня этим уже никого не удивить, но ещё 8 лет тому назад, когда идея реализовать простейшие графические команды на единой подложке с CPU только-только начала обретать воплощение (к слову, заместив простейшие GPU, распаянные в качестве южного моста на MB) - это был настоящий прорыв!
Таким образом, дискретный CPU превратился в SoC: CPU+RAM+GPU, и этот успех предвосхитил многочисленные трансформации, произошедшие и с остальными прото-узлами.
Эволюция GPU в GPU+RAM+ROM
Параллельно развитию CPU - развивались и дискректные GPU. Имея исторически альтернативные задачи (в виде многочисленных идентичных вычислений) GPU быстро развился до модуля с собственной RAM.
Пока общая производительность CPU слабо зависела от эффективности RAM (о чём упомянуто выше), а GPU изначально полагался именно на скорость однотипных вычислений, модули GDDR (для работы с GPU) значительно вырвались вперёд по частотам. Теперь же, когда и CPU стали RAM-dependent, анонсированные чипы DDR5 значительно сравнялись по своим характеристикам к GDDR5, но об этом чуть позже.
Но на одном лишь добавлении RAM - развитие GPU отнюдь не остановилось. Когда к одному адаптеру подключено до 6 мониторов 4K, и вы ворочаете множество слоёв в рендере или CAD/CAE, количество необходимой "оперативной" памяти внезапно устремляется к сотне Гб и выше. Именно это побудило разместить на модуле GPU ещё и собственную выделенную ROM! Разумеется, речь о твердотельной памяти SSD (которую в след за GDDR назвали SSG), однако объём в 2TB таки вызывает некоторый трепет даже сегодня, спустя 4 года.
Итого, дискретный GPU превратился в [почти самодостаточный] модуль GPU+RAM+ROM.
Эволюция ROM в ROM+RAM
Хронологически - следующей под нож эволюции попала память ROM. В попытке увеличить скорость r/w-операций HDD, как мастодонты ROM, постепенно наращивали физическую скорость вращения диска. Однако, достигнув ~10..15krpm столкнулись с существенным снижением надёжности и увеличением нагрева, что послужило толчком к интегрирации собственной подсистемы RAM. Сейчас кэшем в 256Mb на HDD уже не удивить, а франкенштейны SSHD, ставшие пересменком эпох, и вовсе имели гигабайты. Собственно, SSD в HDD выполняли роль RAM, но, со стремительным снижением стоимости, ROM быстро стали полностью состоять из SSD.
Совершенно логично, что спустя непродолжительное время - растущие задачи потребовали RAM уже в SSD-ROM! Таким образом, в современных PCI-E x3 NVME SSD полноценный DRAM-кэш уже стал достаточно распространённой вещью, существенно ускоряя r/w CPU-обращения к и без того внушительным параметрам.
Где нужны такие скорости ROM?
В это сложно поверить, но в HPC (High Power Computing) для CAM/CAE задач уже более 5 лет даже NVMe SSD являются самым узким местом. Например, типовой небольшой гидродинамический расчёт в Ansys весит около 200-300Gb, и работа с ним - тяжелейшее испытание именно для ROM-систем.
Именно так HDD ROM превратились в SSD+RAM, а на рынке уже вовсю развиваются PSI Gen4 SSD.
Эволюция RAM в RAM(ROM)+CPU
И, в качестве апогея, нельзя не рассмотреть, во что же превратилась RAM. В целом, по ряду объективных причин (описано выше), RAM для CPU развивалась достаточно неспешно. Однако, существенное ускорение шины памяти, а так же ежегодный рост трафика данных порядка 150%/y таки привели к двум очень значимым изменениям RAM.
Во-первых, применение PIM (processing-in-memory) - а это в самом буквальном смысле embedded CPU - обещает нам почти трёхкратный прирост производительности.
А во-вторых, DDR5-RAM будет иметь до 0.5Tb памяти на ОДНОЙ планке, коего объёма у многих пользователей нет даже в виде ROM. RAM-disk уже достаточно распространённое явление, и радикальное увеличение/ускорение RAM в купе с развитием облачных сервисов может привести к принципиальному пересмотру архитектуры вычислительных систем.
Таким образом, RAM превратилась в RAM+CPU с мощным заделом на роль моно-сессионного ROM.
Итого, MegaSoC
На сегодняшний день, строго-дискретные CPU, GPU, ROM и RAM превратились в сильно перемешанные многофункциональные отделы. Вот только задумайтесь - CPU получили кэш, чтобы забрать часть расчётов у RAM, а RAM получило собственный CPU, чтобы теперь уже забрать часть расчётов у CPU; ROM получило собственную RAM, а GPU вообще стал мини-компьютером:
CPU+RAM+GPU - всё ещё скорее вычислитель, но и в графику немного может, и запомнить что-то несложное
GPU+RAM+ROM - тоже всё ещё про графику, но рабочие проекты может целиком держать в себе
SSD+RAM - вроде пока ещё ROM, но граница с RAM стремительно стирается
RAM(ROM)+CPU - более чем RAM, да ещё и посчитать немного может, и удержать огромный массив на активную сессию
Современные отделы компьютера очень похожи по своей сути на отделы мозга, всё больше вовлекаясь в каждый процесс с разным весовым коэффициентом. И в самое ближайшее время мы можем ожидать архитектуру "MegaSoC" - кластер из нескольких взаимо-интегрированных подсистем.
Очевидно, нас ждёт распространение нишевых решений: без RAM (SSD-RAM only), без ROM (Tb RAM-disk thin-client) и прочие комбинации, которые ещё год назад казались невозможными, или как минимум дикими.
Ну а что будет ещё дальше, это полностью в наших руках ;)