Сколько способов-суперскалярных стоят современные процессоры Intel? - PullRequest
2 голосов
/ 16 октября 2019

Я только что узнал о суперскалярных процессорах (https://en.wikipedia.org/wiki/Superscalar_processor).

. Я также узнал, что по мере увеличения ширины / количества суперскалярных процессоров все усложняется, а сложность возрастает настолько быстро, что лучше добавить ещеЯдра вместо большей ширины. Мой инструктор сказал, что больше не стоит добавлять больше путей между 4-сторонним и 8-сторонним суперскалярным.

Это заставило меня задуматься: где Intel прекратила добавлять пути и начала добавлятьЯдра? Сколько существует способов в каждом ядре моего Intel 8-го поколения Core i7?

Применима ли концепция способов даже к этим процессорам?

1 Ответ

5 голосов
/ 16 октября 2019

См. Руководство по микроарху Agner Fog для получения подробной информации о трубопроводе. https://www.realworldtech.com/haswell-cpu/, а также глубокое погружение Уарча на Haswell с блок-схемами. (И ссылки на некоторые статьи Дэвида Кантера о других uarches, таких как SnB и Core2, а также AMD Bulldozer и K8.) Также другие ссылки в https://stackoverflow.com/tags/x86/info

Да, современные ядра x86 являются суперскалярными не в порядкевыполнение. Со времени PPro основные принципы не изменились: расшифруйте машинный код x86 в микрооперации (мопы), которые могут быть запланированы ROB + RS.


(Терминология: Intel использует «проблема» для обозначения »скопировать в неупорядоченный сервер »и« диспетчеризация », что означает« отправка из планировщика в исполнительный модуль », выделение ресурсов и обновление RAT. Во многих остальных областях компьютерной архитектуры,люди используют противоположную терминологию.)

Intel, поскольку Core 2 является суперскалярным на 4 мопа в стадии выпуска / переименования / выделения, самое узкое узкое место. (До этого PPro в Pentium-M, это было 3 в ширину.) Core 2 редко может выдержать это на практике, слишком много других узких мест. Skylake часто может очень близко подходить к коду с высокой пропускной способностью.

Чтобы получить больше работы для каждого мопа с плавкой областью, есть микрослияние с ALU-мопом с загрузкой источника памяти. И слияние макросов, например, cmp / test + jcc, так что команды сравнения и ветвления вместе декодируются как один моп. (См. Руководство по микроарху Агнера Фога). Это включает в себя ваш процессор Kaby или Coffee Lake. Максимальная поддерживаемая пропускная способность в неиспользованном домене составляет 7 моп / ч, достижимо на практике на Skylake . В пакетном режиме планировщик может отправлять мопы на каждый порт.

Ледяное озеро (Sunny Cove uarch) расширяет этап выпуска до 5.

AMD Zen'sимеет ширину 6 мопов, но только 5 инструкций ширину , поэтому он может достигать только 6 моп / такт при выполнении хотя бы некоторых 2-х тактных команд. например, 256-битные инструкции AVX SIMD, которые он декодирует в 2x 128-битные половины (или хуже для перестановок, пересекающих полосы).


Skylake расширил унаследованные декодеры до 5 мегапикселей / такт, и выборка кеша мопдо 6 моп / час, вместо 4 / час в SnB через Бродвелл. Это больше скрывает внешние пузырьки и поддерживает стадию выпуска / переименования с 4 мопами за такт большую часть времени в высокопроизводительном коде. (Между этапами имеются буферы / очереди, например, 64-мегапиксельный IDQ, который передает этап выпуска / переименования.)

Это включает в себя ваш процессор Kaby или Coffee Lake: микроархитектурно ядра IA в KBL идентичны SKL, иCoffee Lake - очень незначительный твик (исправление буфера цикла, который SKL пришлось отключить при обновлении микрокода из-за частичного слияния регистров, например, ошибка процессора). KBL и CFL имеют лучшие графические процессоры, чем SKL, но ядра x86 в основном одинаковы.


Да, для большей части кода наблюдается уменьшение отдачи, превышающее 3 или 4, но SMTпозволяет широкому ядру находить ILP сразу в двух (или 4 или 8) потоках выполнения. Это не позволяет тратить более широкие ядра, но стоимость ядра масштабируется больше, чем линейно с шириной, поэтому вы можете сделать это только в том случае, если иногда одна нить может использовать большую часть этой ширины. В противном случае вы бы просто собрали более мелкие ядра. (По крайней мере, если у вас есть масштабируемое соединение для большего количества ядер ...) Мой ответ на Почему бы не сделать одно большое ядро ​​ЦП? на электронике. В SE есть больше деталей о компромиссах и ограниченном ILP, доступном в реальном временирабочие нагрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...