Блок-схема, на которую вы ссылались, относится к клиентским процессорам Skylake, которые содержат 2 или 4 физических ядра. На странице Википедии в Skylake это включает в себя все процессоры Mainstream Desktop, все мобильные процессоры и все процессоры Xeon E3 v5. Все они используют кольцевое соединение. Хотя процессоры Skylake клиентского уровня включают только до 4 физических ядер, более новые поколения, такие как Coffee Lake , могут включать 6 физических ядер и также использовать кольцевую топологию. В случае других процессоров Skylake (серверных) используется ячеистое межсоединение. Это были бы первые высокопроизводительные многоядерные процессоры Intel, использующие ячеистое соединение. Для этого у Intel есть патент , и в нем подробно рассказывается о том, как он работает и с чем связан.
Способ, которым каждое ядро подключено к межсоединению, одинаков независимо от топологии межсоединения. Заполняющие буферы L1 и L2 напрямую не связаны с межсоединением. Будет некоторый компонент, который играет роль агента межсоединения, который знает, как создавать, отправлять и получать сообщения через межсоединение к одному или нескольким узлам. Даже если это не было явно упомянуто на странице, на которую вы ссылались, это упомянуто на странице о процессорах сервера Skylake, которая, кажется, лучше объясняет , как это работает на базовом уровне . По крайней мере, цифры там лучше, чем в патенте.
Каждое ядро подключено к общему сетевому ограничителю (CMS) 1 , который является частью неядерного ядра (вещи вне всех ядер, но внутри чипа). CMS знает идентификаторы всех узлов в соединении, включая его собственный узел. Когда он получает сообщение, не предназначенное для его узла, он пересылает его следующему узлу на запланированном маршруте. Если сообщение предназначено для узла, оно передается компоненту, являющемуся частью ядра, который называется кэшем и домашним агентом (CHA) 2 . Согласно патенту CHA соединяет L2 ядра с внутренним срезом L3 и CMS (который по сути является шлюзом между узлом и межсоединением). В процессорах Skylake клиентского уровня CHA отсутствует, есть только «CA» (я придумал этот термин только для его обсуждения). Я буду обсуждать это более подробно.
Соединение выглядит примерно так:
|
|
vertical ring
|
|
----- -----
|node A| -- bus -- |CMS| -- horizontal ring -- |CMS| -- bus -- |node B|
----- -----
|
|
vertical ring
|
|
Каждый узел выглядит примерно так:
----- ----- -----
|CMS| -- bus -- |CHA| -- intra-node interconnect -- |L3 |
----- ----- -----
|
|
-----------------------
| (we are now in core)|
| L2 controller |
-----------------------
|
|
the rest of the core
Что делает ЦДХ? Ну, это называется кеш и home агент. Какие? Домашний агент находится на узле? Обратите внимание, что домашний агент отвечает за преобразование адресов физической памяти в адреса каналов памяти, которые передаются через межсоединение к целевому контроллеру памяти целевого канала памяти. В процессорах Skylake серверного уровня домашние агенты фактически распределены по узлам. Часть cache в CHA означает, что CHA также отвечает за определение того, какой срез LLC содержит строку кеша, которая сопоставлена с данным адресом, и направляет запрос памяти в соответствии с целевым контроллером среза LLC. CHA также реализует протокол когерентности, выполняя такие действия, как предоставление (измененных) копий строк кэша другим узлам (MESIF или одному из его вариантов) и отвечая на запросы когерентности с помощью встроенного snoop-фильтра. Временные запросы также проходят через ЦДХ. Кроме того, CHA обрабатывает запросы ввода-вывода, отправляя их целевому узлу, который может обрабатывать запросы (узел PCIe).
Домашние агенты распространяются только в процессорах Skylake серверного уровня. В клиентских процессорах домашний агент (и контроллер памяти) существуют в системном агенте (см. Рисунок из статьи Wikichip). С другой стороны, в процессорах сервера каждый контроллер памяти является узлом в сетке (NUMA).
Топология сетки и распределенные домашние агенты значительно улучшают масштабируемость серверных процессоров по отношению к количеству физических ядер. В патенте Intel обсуждается совместное использование одной CMS между несколькими узлами для создания гибридных топологий, что полезно для очень большого числа ядер. Я не думаю, что какие-либо процессоры Skylake используют это все же.
(1) В статье Wikichip это называется конвергентной сеткой. Я не знаю происхождение этого термина. Intel называет это общей остановкой сетки, общей остановкой сетки или станцией сетки. Я буду использовать термин Intel.
(2) Статья Wikichip называет его кеширующим и домашним агентом, но Intel называет его кеширующим и домашним агентом или домашним кеш-агентом.