Видео:Intel mesh vs ring bus. Сравнение в играх.Скачать
Процессоры Intel. Внутренняя кольцевая шина (ring bus) и топология сетки (mesh).
Intel в процессорах Skylake-X и -SP использует топологию сетки (mesh) вместо кольца. В новой архитектуре процессоров Intel отказалась от внутренней кольцевой шины.Intel продолжает увеличивать число ядер в своих процессорах. Skylake-X и Kaby Lake-X будут содержать до 18 ядер, что ставит перед Intel новые проблемы — инженерам компании пришлось серьезно пересмотреть структуру чипа. Еще с поколения Sandy Bridge Intel для соединения ядер использовала (рис. 1) так называемую кольцевую шину (ring bus). В последующих поколениях она тоже использовалась, пусть и с некоторыми изменениями. Хотя Intel вплоть до третьего поколения Ring Bus расширяла число поддерживаемых ядер (рис. 2), но технология достигла предела своих возможностей.
Рис. 1. Каждый процессор обслуживался двумя кольцевыми шинами.
Процессоры Skylake-SP и Skylake-X используют топологию сетки (mesh) для связи ядер. Кэш L3, контролеры памяти и ввода/вывода тоже интегрируются в сетку. В результате можно легко наращивать число ядер процессора, сочетая высокую пропускную способность и низкие задержки. Технология для Intel не новая, поскольку она уже использовалась в вычислительных ускорителях Xeon Phi.
При переходе на топологию сетки Intel пришлось изменить расположение контроллеров памяти. Раньше они располагались ниже ядер, теперь вынесены в правую и левую часть. Все это обеспечивает более эффективную работу с памятью (рис. 3).
Тесты покажут, насколько существенно Intel смогла увеличить производительность благодаря переходу на сетчатую топологию в многопоточных приложениях. В теории новая топология обеспечивает большую пропускную способность по сравнению с кольцевой шиной, а также меньшие задержки, что должно увеличить производительность.
Ещё в марте 2017 года компания Intel показала изображение 28-ядерного кристалла процессора Skylake-SP. Тогда все обратили внимание, что расположение ядер и интерфейсов претерпели значительные изменения. Как выяснилось, в дальнейшем Intel откажется (и уже отказалась для процессоров Skylake в версиях Xeon и настольных решений высшей производительности) от внутрипроцессорной кольцевой шины.
Рис. 2. Intel Xeon Processor E5 v4 Product Family HCC.
Кольцевая шина (ring bus) была представлена еще в 2008 году вместе с архитектурой Nehalem и процессорами Westmere-EX. Она была необходима в связи с увеличением числа ядер на кристалле. Разработчики Intel использовали три варианта дизайна процессоров (в зависимости от максимального числа ядер на кристалле) с тремя вариантами кольцевой шины. В самом сложном случае процессор внутри разделялся на два кластера, каждый из которых обслуживался двумя кольцевыми шинами (рис. 2). Между собой шины соединялись двунаправленными коммутаторами с буферизацией (на диаграмме выше обозначены серым цветом).
По мере роста числа ядер кольцевая шина стала препятствием на пути увеличения пропускной способности и снижения задержек. Точнее, она стала слишком много потреблять, чтобы её можно было масштабировать в сторону увеличения скорости по обмену данными. Поэтому в процессорах Skylake-SP разработчики Intel решили применить иную структуру для связи ядер друг с другом — хорошо опробованную в архитектуре Intel Xeon Phi (Knights Landing) ячеистую сеть (рис. 3).
Кольцевая шина, как вы можете знать, в максимальной конфигурации представляет собой четыре двунаправленных кольца (по два кольца на кластер из ядер), соединённых двумя двунаправленными коммутаторами с буферами. Дальнейшее наращивания числа ядер, кластеров и коммутаторов значительно увеличивает потребление и задержки при обмене данными между ядрами из разных кластеров. Выход найден в переходе на ячеистую сеть, в которой каждое ядро поддержано собственным коммутатором и возможностью координатной пересылки данных фактически напрямую любому другому ядру в процессоре.
Ранее подобную сеть Intel реализовала в архитектуре процессоров Xeon Phi (Knights Landing и другие), так что разработка опробована на практике и показала свою эффективность, ведь в составе ускорителей и процессоров Xeon Phi может быть свыше 70 ядер.
Рис. 3. Структура ячеистой сети.
Архитектура ячеистой 2D-сети дебютировала в продуктах Intel Knights Landing. Сеть состоит из горизонтальных и вертикальных межсоединений между ядрами, кэшем и контроллерами ввода-вывода. На схеме отсутствуют буферизированные переключатели, которые очень негативно сказываются на задержках. Возможность «ступенчатого» движения данных через ядра позволяет осуществлять гораздо более сложную и предположительно эффективную маршрутизацию. Intel утверждает, что 2D-сеть имеет более низкое напряжение и частоту, чем у кольцевой шины, но при этом обеспечивает более высокую пропускную способность и более низкую задержку.
Читайте также: Шины зимние 170 70 r14
Каждое ядро в новой архитектуре имеет свой коммутатор с буфером и связано с любым другим ядром в составе процессора только через два узла — исходящий и входящий. Это позволяет ячеистой шине работать на относительно небольших частотах и существенно снизить общее потребление интерфейса без ухудшения пропускной способности и увеличения задержек. К тому же подобная структура коммуникаций очень хорошо масштабируется, позволяя Intel в будущем наращивать число ядер на кристалле без заметного увеличения энергетических затрат на внутреннюю транспортировку данных. Разъяснение сути новой внутренней шины, а также появление изображения 18-ядерного процессора с новым дизайном, позволяет также убедиться, что новые процессоры действительно несут интегрированный 6-канальный контроллер памяти, который теперь разнесён по краям сбоку на кристалле чуть выше середины.
Видео:Разгон на "постоянку" в современных процессорахСкачать
Кольцевая шина ring bus
Ещё в марте компания Intel показала изображение 28-ядерного кристалла процессора Skylake-SP. Тогда мы обратили внимание, что расположение ядер и интерфейсов претерпели значительные изменения. Вчера в компании Intel на одном из домашних мероприятий пояснили, с чем связаны эти перемены в дизайне. Как выяснилось, в дальнейшем Intel откажется (и уже отказалась для процессоров Skylake в версиях Xeon и настольных решений высшей производительности) от внутрипроцессорной кольцевой шины.
реклама
Кольцевая шина (ring bus) была представлена в 2008 году вместе с архитектурой Nehalem и процессорами Westmere-EX. Она была необходима в связи с увеличением числа ядер на кристалле. Разработчики Intel использовали три варианта дизайна процессоров (в зависимости от максимального числа ядер на кристалле) с тремя вариантами кольцевой шины. В самом сложном случае процессор внутри разделялся на два кластера, каждый из которых обслуживался двумя кольцевыми шинами. Между собой шины соединялись двунаправленными коммутаторами с буферизацией (на диаграмме выше обозначены серым цветом).
По мере роста числа ядер кольцевая шина стала препятствием на пути увеличения пропускной способности и снижения задержек. Точнее, она стала слишком много потреблять, чтобы её можно было масштабировать в сторону увеличения скорости по обмену данными. Поэтому в процессорах Skylake-SP разработчики Intel решили применить иную структуру для связи ядер друг с другом — хорошо опробованную в архитектуре Intel Xeon Phi (Knights Landing) ячеистую сеть.
Каждое ядро в новой архитектуре имеет свой коммутатор с буфером и связано с любым другим ядром в составе процессора только через два узла — исходящий и входящий. Это позволяет ячеистой шине работать на относительно небольших частотах и существенно снизить общее потребление интерфейса без ухудшения пропускной способности и увеличения задержек. К тому же подобная структура коммуникаций очень хорошо масштабируется, позволяя Intel в будущем наращивать число ядер на кристалле без заметного увеличения энергетических затрат на внутреннюю транспортировку данных.
Видео:Разгон кольцевой шины и кэша L3 процессораСкачать
Процессоры Intel Sandy Bridge — все секреты
Оглавление
- «Крутой и холодный».
- Фронт конвейера: Предсказание переходов; Декодирование и IDQ; Стековый движок; Тайная жизнь нопов.
- Кэш мопов: Цели и предшественники; Устройство; Размеры; Ограничения; Работа.
- Диспетчер и планировщик: Переименование и размещение; Новый старый стиль.
- Исполнительная стадия: Тракты данных; Конфликты завершения; Межтрактные шлюзы; Вещественные денормалы; Частичный доступ к регистрам.
- AVX: Реализация; Подножка; Решение; Сохранение состояния; Динамические тайминги; Новые и отсутствующие команды.
- Тайминги команд.
- Кэши: L1D; LSU; Внеочерёдный доступ; STLF; Задержки чтения; TLB; Аппаратная предзагрузка.
- Hyper-Threading.
- Внеядро: Кэш L3; Кольцевая шина; Поддержка аппаратной отладки; Когерентность и «поддержка» OpenCL; Системный агент и ИКП.
- Turbo Boost 2.0.
В скобках указаны значения для Nehalem (если есть отличие).
Читайте также: Шины передние для мотоцикла
Кэш | L0m (новый) | L1I | L1D | L2 | L3 |
Размер | 1536 мопов | 32 КБ | 256 КБ | 1–20 (2–30) МБ | |
Ассоциативность | 8 | 8 (4) | 8 | 8 | 8, 12, 16, 20 (12, 16, 24) |
Размер строки | 6 мопов | 64 байта | |||
Задержка, тактов | 3? | 4 | 4–7 (4) | 11–12 (10) | ≈26–31 (≈35–40) |
Число портов | 2 | 1 | 3 (2) | 1 | 1 на банк, 2–8 банков (2 на кэш, 1–10 банков) |
Разрядность портов | 4 мопа | 16 байт | 64 байта | 64? (32) байта | |
Частота (f — частота ядра) | f | f/2 | Максимум всех f (2,13–2,66 ГГц) | ||
Политика работы | Включающая | Включающая | |||
Свободная | |||||
Только чтение | Отложенная запись | ||||
Общий для … | Потоков ядра | Всех ядер, включая ГП |
Сразу скажем, что кэши L1I и L2 почти не изменились — у первого ассоциативность снова (как и до Nehalem) стала 8, а у второго чуть увеличилась задержка. Самое главное изменение в ядрах, касаемое кэшей, кроется в доступе к L1D, который теперь стал 3-портовым: к раздельным портам чтения и записи добавили ещё один для чтения. Кроме того, как уже было указано, в планировщике Nehalem 2-й порт вычисляет адрес чтения и исполняет само чтение, 3-й вычисляет адрес записи (только), а 4-й — исполняет саму запись. В SB же порты 2 и 3 могут и вычислить любой адрес, и исполнить чтение.
Внимательный Читатель сразу найдёт подвох: портов L1D — 3, а адресных генераторов — 2. При не более чем 16-байтовых обменах их устоявшийся максимальный темп составит 32 байта/такт (либо два чтения, либо чтение и запись). 32-байтовые операции каждым портом обслуживаются за два такта, причём вычисление адреса для конкретной команды происходит в течение первого из них. Так что для двух чтений и одной записи требуется три адреса в течение двух тактов — тогда при потоковых обменах один из трёх нужных адресов можно вычислить заранее в течение второго такта предыдущей 32-байтовой операции. Только так мы получим искомый максимум в 48 байт/такт.
Возникает довольно странный компромисс: три 16-байтовые операции за такт в потоке сделать нельзя. С другой стороны, за такт можно вычислить адреса для двух 32-байтовых обменов, но даже одно 32-байтовое чтение за такт не запустишь, потому что порты чтения не объединяются. Т. е. либо нам не будет хватать числа AGU (тех, что в портах 2 и 3), либо ширины портов, либо возможности их объединения.
Как мы знаем из теории, многопортовость в кэшах чаще всего делается не явная, а мнимая, с помощью многобанковости. Однако Nehalem нарушил это правило, внедрив 8-транзисторные битовые ячейки для всех кэшей ядра. Помимо большей экономии (об этом подробно рассказывалось в статье о микроархитектуре Intel Atom, который тоже применяет такую схему), это также даёт возможность получить истинную 2-портовость (чтение + запись), что и было использовано в L1D — никаких конфликтов по адресам в имеющихся 8 банках не было. В SB банков по-прежнему 8, а портов уже 3. Очевидно, конфликты неизбежны, но только среди адресов портов чтения.
Каждый банк L1D имеет ширину в 8 байт, вместе составляя строку, поэтому каждый из 16-байтовых портов использует 1–2 банка при выровненном доступе и 2–3 при невыровненном. Например, 8-байтовое чтение, пересекающее 8-байтовую границу, использует 2 банка, как и выровненное 16-байтовое. В SB конфликт происходит, если хоть один из банков, нужных одному чтению, также нужен и второму, причём для доступа к другой строке. Последнее означает, что если оба чтения требуют не только одинаковый(ые) банк(и), но и одинаковые номера строк в нём (них), то конфликта не будет, т. к. фактический доступ произойдёт один, и он обслужит оба обращения. В Nehalem, с его единственным чтением за такт, такого, очевидно, быть не могло.
Упомянув о невыровненном доступе, скажем и о более «грешных» делах — пересечении строки кэша, что обойдётся 5-тактным штрафом, и границы страницы виртуальной памяти (чаще всего — 4 КБ), что наказывается в среднем 24 тактами (ситуация требует сериализации конвейера). Причём последняя цифра малообъяснима, т. к. TLB, как мы увидим ниже, способны на одновременную обработку обеих смежных страниц — но даже при последовательном доступе двухзначной цифры получиться не может…
Читайте также: Шипование шин в липецке
Изменений в LSU (контроллере L1D, который Intel упорно называет MOB) не меньше, чем в само́м кэше. Начнём с того, что очередь чтения удлинилась с 48 до 64 ячеек, а записи — с 32 до 36. Каждая ячейка привязана к одному мопу, а очередь записи хранит ещё и 32 байта данных (было 16). Очередь чтения хранит все команды считываний, но в каждый момент не более 32 могут обрабатываться на разных стадиях. Фактически, это отдельные диспетчер и планировщик, «ROB» которых хранит 64 мопа, а «резервация» — 32. Когда чтение завершено, моп удаляется из этой резервации, но остаётся в очереди чтения до отставки. Очередь записи хранит информацию до отставки предыдущих команд, когда ясно, что адрес, данные и сам факт исполнения команды верны, а значит её можно попытаться записать в кэш. Если попытка успешна — моп записи уходит в отставку, освобождая место и в очереди, и в ROB. При промахе или других проблемах запись задержится.
Как и все современные кэши, L1D является неблокирующим — после промаха он может принимать дальнейшие запросы одновременно с заполнением себя подгруженными данными. Кэш может выдержать даже 3 промаха/такт. Одновременно удерживается столько промахов, сколько имеется буферов заполнения. В SB, как и в его предшественнике, у L1D таковых 10, а у L2 — 16. Политика отложенной записи в L1D и L2 означает, что модифицированная строка остаётся в кэше до вытеснения, однако информация о факте её модификации (если до этого данные были «свежие») отправляется в теги соответствующей строки в L3.
Внеочерёдный доступ
Внеочерёдный движок получил любопытное дополнение: предсказание адресов, на основе которого порядок обращений в кэш может быть переставлен, делается не отдельными адресами, а целыми диапазонами — предсказывается верхнее и нижнее значения адреса, в пределах которых, как предполагается, произойдёт запись. Если точно известный адрес чтения не попадает ни в один диапазон ещё не исполненных записей — чтение можно запустить заранее. Такой вариант срабатывает чаще имевшегося ранее, который разрешал внеочерёдную загрузку, только если есть высокая вероятность несовпадения с конкретным адресом записи. Сама вероятность рассчитывается, как в предсказателе переходов — в LSU, видимо, есть некий аналог таблицы BHT со счётчиком вероятности в каждой ячейке. Когда адрес записи становится известен, счётчик увеличивается при несовпадении адресов и уменьшается при конфликте.
Однако предсказатель оперирует только выровненными на 16 байт чтениями размером до 16 байт, а также выровненными 32-байтовыми — остальные будут ждать вычисления адресов всех предыдущих записей. Ещё одна проблема нового движка в том, что он предсказывает лишь младшие 12 бит адресов: если у записи и чтения они равны (даже если они не предсказаны, а точно известны), то чтение считается зависимым от записи. Т. е. фактически предсказывается лишь 8 бит адреса — с 5-го по 12-й. Возможно, ложная зависимость обусловлена тем, что в ячейках таблицы счётчиков нет поля, хранящего старшую часть адреса.
…серьёзно улучшен. Описывать громоздкие старые правила для Nehalem мы не будем, укажем сразу новые:
- байты для чтения должны полностью содержаться в записи, вне зависимости от выровненности адресов и размеров операций; это эквивалентно следующему: W-байтовая запись по адресу A перенаправляется в R-байтовое чтение по адресу B, если A≤B и A+W≥B+R; далее указаны исключения:
- если запись 16- или 32-байтовая — 4- и 8-байтовые чтения обрабатываются в пределах её 8-байтовых порций;
- если запись 32-байтовая — все чтения, кроме 32-байтовых, обрабатываются в пределах её 16-байтовых половин;
Ясно, что STLF не может работать одновременно с внеочерёдной загрузкой: адреса записей должны быть известны точно, а не только 8 битами.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
💡 Видео
Преимущества от разгона процессора и памяти в играх. Как, что и когда разгонять?Скачать
Святой разгон Intel. Гайд для чайниковСкачать
Разгон процессоров Intel и AMD через BIOS.Скачать
Как разогнать процессор и память? Гоним по шине и множителю.Скачать
Виды топологий локальных сетей | Звезда, кольцо, шинаСкачать
Топологии сетей | Курс "Компьютерные сети"Скачать
Intel Sandy Bridge 10 лет. Что старый i7 может сейчас?Скачать
Network Topologies (Star, Bus, Ring, Mesh, Ad hoc, Infrastructure, & Wireless Mesh Topology)Скачать
Виды топологий локальных сетей ¦ Звезда, кольцо, шинаСкачать
ЧАСТОТА vs ТАЙМИНГИ - разрушаем мифы! Сколько нужно ОЗУ?Скачать
СОВРЕМЕННЫЙ 🤖ТОП ПРОЦЕССОРОВ✅ intel🤯Скачать
Гайд инструкция как разогнать процессор intel i5 12600k \ i7 12700k \ i9 12900k на msi z690 РазгонСкачать
Как разогнать процессор. Инструкция для чайников. Intel.Скачать
05 Сети с маркерным доступом. 01 Token BusСкачать
Частота процессора, множитель и системная шинаСкачать
Эта рамка улучшит охлаждение на 4-10 градусов (но не всегда) на сокете 1700 (см закрепленный комм.)!Скачать