Какие виды низкоуровневых средств обычно не поддерживаются на многоядерных машинах? - PullRequest
0 голосов
/ 23 ноября 2010

Я смотрю на некоторый оптимизированный кроссплатформенный код параллелизма низкого уровня, предназначенный для работы на многоядерных машинах, и хочу проверить некоторые его предположения.

Поддержка аппаратных оптимизаций некоторых типов, вероятно, не поддерживается в многоядерных разработках (например, поддержка выполнения вне порядка [ wikipedia ] кажется хорошим кандидатом - она ​​требуетбольшая площадь поверхности для реализации, и может быть силовая свинья).У кого-нибудь есть список других подобных средств, которые обычно доступны на одном или небольшом количестве основных компьютеров, но обычно не учитываются на машинах с большим количеством ядер на них?

1 Ответ

2 голосов
/ 11 декабря 2010

Сегодня многоядерные машины - это утепленные штампы из однопроцессорных систем.Вы могли бы почти представить себе распиливание 4-ядерного кристалла в 4 1-ядерных кубика.Я немного преувеличиваю.

В будущем многоядерные машины будут более продуманно разработаны для обеспечения энергоэффективности и эффективности использования площадей.Вы можете увидеть тот же ISA, но с другим набором ресурсов (большее или меньшее количество дублированных функциональных блоков) и даже с некоторым распределением ресурсов между ядрами (например, AMD Bulldozer).И, как вы говорите, отступая от сложности и энергозатрат на выполнение без заказа без правил.Скорее всего, это будет восприниматься как различие в разнице в инструкциях (IPC) (более или менее высокая производительность) в одной и той же архитектуре набора команд.

Кроме того, поскольку поставщики вынуждены манипулировать гипотетическим портфелем большихПо ряду оптимизированных по производительности последовательных ядер и небольших по порядку или меньшему по порядку (OoO) и более узким, более энергоэффективным ядрам с «пропускной способностью» им будет необходимо поддерживать синхронизацию этих различных реализаций с эволюцией своих ISA.,Некоторые ядра могут поддерживать новые инструкции, новое состояние, новые сопроцессоры, виртуализацию, безопасность и т. Д. Раньше, чем другие.Это приводит к проблеме кодирования в общий знаменатель, а также освещает новые возможности для лучшей производительности или энергоэффективности (или чего-то еще) на тех ядрах, которые имеют новые возможности.все традиционные методы компьютерной архитектуры для обмена шлюзами на выразительную мощность, производительность или энергоэффективность могут быть переосмыслены и выборочно удалены в будущих небольших ядрах, ориентированных на пропускную способность.

  • Аппаратная многопоточность
  • Aggressive OoO -> скромное OoO или даже выполнение по порядку
  • Высокие степени микроархитектурных спекуляций
  • Необычные предсказатели ветвлений
  • Большие TLB
  • Необычные предварительные выборки памяти
  • Глубокие конвейеры
  • Широкий выпуск / множество копий функциональных блоков
  • Большие кэши, широкие автобусы в кэши
  • ...

Но это идет в обе стороны.Может также случиться так, что новые малые оптимизированные по пропускной способности энергетически оптимизированные ядра имеют новые функции, которых нет в старых ядрах OoO.Например, новые инструкции Larrabee (LRBni) (http://www.drdobbs.com/high-performance-computing/216402188)) были предложены для машины с десятками более простых ядер. В качестве другого примера, небольшие ядра могут превратиться в аппаратную многопоточность, чтобы обеспечить лучший допуск на задержку памяти, чтобы компенсировать меньшие частные кэши.

Кроме того, наличие множества небольших энергозатратных ядер означает, что вы можете посвятить некоторые ядра таким образом, чтобы оптимизировать производительность для конкретных полезных нагрузок. Например, пользовательские процессоры и инструменты Tensilica предполагают, что некоторые изу ваших маленьких ядер будут дополнительные инструкции и пользовательские пути к конкретным проблемам (например, ускорение внутреннего цикла декодирования видео). Таким образом, в этих случаях маленькое ядро ​​может (нелогично) иметь гораздо лучшую производительность, чем намного большее ядро.

имеет смысл?

Счастливого взлома!

...