Один из ведущих разработчиков Intel, Ахилеш Кумар (Akhilesh Kumar), ответственный за разработку серверных процессоров Skylake-SP, опубликовал в блоге пост, посвящённый анонсу новой архитектуры внутрипроцессорных соединений, которая придёт на смену предыдущей, реализованной в чипах Core i7 класса HEDT, а также в процессорах Xeon v3 и v4 (Haswell/Broadwell-EP). Новая технология носит название Intel Scalable Processor Platform и главной её целью является конкуренция с технологией AMD Infinity Fabric. Последняя, как известно, служит для связи между модулями в процессорах Ryzen, Threadripper и EPYC. Чтобы понять, почему Intel решила сменить структуру внутрипроцессорных соединений, надо понять, в чём заключается узкое место предыдущей структуры. Здесь надо отметить, что Intel всегда использовала монолитные кристаллы даже в многоядерных процессорах, тогда как AMD в Threadripper и EPYC решила прибегнуть к компоновке типа MCM (Multi-Chip Module) с несколькими кристаллами в едином корпусе. Каждый подход имеет свои достоинства и недостатки, о чём ниже.

Схема внутрипроцессорных соединений в Broadwell-EP. Серым цветом выделены межкольцевые коммутаторы
Если в обычных потребительских процессорах проблема пропускной способности внутренних шин стоит не так остро, то в многоядерных решениях она начинает играть существенную роль, ведь для эффективной многопоточной обработки данных все ядра должны быть вовремя «накормлены», иначе они просто будут простаивать впустую в ожидании поступления новой порции данных. До появления Scalable Processor Platform компания Intel использовала три разновидности кристаллов: LCC (Low Core Count, до 10 ядер), MCC (Medium Core Count, до 14 ядер) и HCC (High Core Count, от 16 ядер); это справедливо для Broadwell-EP, в случае с Haswell-EP числа несколько иные, но это не столь важно. На приведённой выше диаграмме хорошо видно, что для соединения отдельных кластеров ядер используются двунаправленные кольцевые шины. В случае с LCC такая шина всего одна, в MCC вторая шина не образует полное кольцо, и, наконец, в HCC работают два полноценных двунаправленных кольца. Друг с другом кольца соединяются посредством буферизированных коммутаторов (серые прямоугольники), что порождает дополнительную задержку в 5 тактов при необходимости передать данные из одного кольца в другое.

В новых решениях Intel используется одноранговая сеть...
По мере наращивания количества ядер задержки растут, шины и коммутаторы должны работать на более высокой частоте, чтобы это компенсировать, а это, в свою очередь, приводит к повышению потребляемой процессором мощности и росту уровня тепловыделения. Именно с этой проблемой столкнулась бывшая ATI Technologies в процессе увеличения количества потоковых процессоров в графических чипах Radeon, и именно поэтому в новой архитектуре Skylake (как HEDT, так и Xeon v5) Intel отказалась от кольцевой топологии, перейдя к сетевой (mesh). Впервые сетевая топология внутренних соединений была использована в чипах Knights Landing, и это неудивительно с учётом огромного количества ядер у этих процессоров.

Схема сети для процессоров Knights Landing
Новая схема выглядит как двунаправленная решётка, а контроллеры памяти переехали к краям кристалла. Исчезли коммутаторы и сопутствующие им схемы буферизации. Небольшие кольца, впрочем, сохранились — теперь они находятся в пересечениях горизонтальных и вертикальных шин и обеспечивают оптимальное распределение потоков данных. Если верить Intel, то возросла и пропускная способность новых шин. Кроме того, для систем с процессорами Purley будет применён новый внешний интерфейс UPI вместо привычного QPI. В целом, новый дизайн кристалла, разработанный Intel, не просто эффективнее старого, но и позволяет наращивать количество процессорных ядер сравнительно малой кровью.

...но с её топологией в реальном кристалле Skylake-X всё не так просто, как на схеме
На диаграмме соединения сосредоточены в правой части каждого ядра или функционального блока, однако снимок ядра XCC (eXtreme Core Count) демонстрирует несколько иную топологию: ядра ориентированы зеркально по отношению друг к другу. Это может внести дополнительные задержки при перемещении данных по горизонтали, поскольку расстояние между узлами сети в этом случае неодинаково, но это в любом случае эффективнее старой схемы с двумя кольцами и буферизированными коммутаторами.

Межкристалльные шины AMD Infinity Fabric в процессоре EPYC
Схема, реализованная AMD, выглядит совершенно иначе: каждые два четырёхъядерных блока CCX (CPU Complex) образуют восьмиядерный кристалл, в котором они общаются между собой с помощью 256-битной двунаправленной шины Infinity Fabric. В 32-ядерном процессоре EPYC таких кристаллов четыре, соединяются они аналогичным образом, но шины пролегают в корпусе чипа. Это ведёт к задержкам при обращении одного процессорного кристалла к данным, находящимся в кеше другого кристалла, особенно, расположенного диагонально — данным приходится преодолевать и промежуточный кристалл, поскольку шин всего четыре и Х-образное соединение в решении AMD не используется.

Сборка из двух AMD CCX делит общий контроллер памяти
Впрочем, этот эффект может компенсировать грамотная программная оптимизация, а что касается наращивания количества ядер, тут AMD в выигрыше: отказ от монолитного многоядерного кристалла позволяет в случае нужды установить в корпусе вместо четырёх восьмиядерных сборок шесть или даже восемь, расплатившись, разумеется, соответствующим ростом латентности и уровня тепловыделения. Intel наверняка использует этот факт в рекламе своей новой технологии, но какой подход покажет себя более жизнеспособным, покажет время.
Источник: