Как многоядерный процессор реализует асинхронную координацию?


8

Я из области компьютерных наук и хочу изучить исчисление процессов для использования в асинхронном проектировании схем.

Итак, я смотрю вокруг текущей практики на асинхронных схемах. Есть много статей, в которых говорится, что невозможность увеличить тактовую частоту приводит к архитектуре многоядерного процессора . Однако никто не может сказать, как достигается асинхронная координация между ядрами.

Я хочу, чтобы вы подтвердили / исправили мои следующие предположения о том, как текущий многоядерный процессор обрабатывает асинхронную координацию:

  1. Каждое ядро ​​имеет отдельные тактовые сигналы, которые не должны быть в фазе друг с другом. Иначе проблема распределения тактового сигнала не была бы решена, не так ли?
  2. Ядра координируются только на уровне программирования. То есть выполняется проверка и установка некоторой памяти (ОЗУ или регистр). А не что-то низкоуровневое, как протокол рукопожатия с использованием схемы рандеву .

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

2
Посмотрите на эту статью о том, как пересекать тактовые домены между разными частотами: w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50

1
(о распределении тактового сигнала: буферное дерево, где все конечные узлы имеют равное время распространения от источника, является решением. Вы можете построить это алгоритмически. Это не тривиально, но работает)
pjc50

1
Недостатков буферных деревьев много: он может потреблять большую часть энергии и 10-30% доступной площади. Однако, как обнаружил наш стартап, основной проблемой асинхронного проектирования является необходимость изменения всего набора программных инструментов для его эффективного использования. IC компании удивительно консервативны из-за затрат на производство и риска неудачи.
pjc50

1
@ pjc50 ISTR, что какой-то процессор с разметкой сетки, ориентированный на передачу сообщений (возможно, Tilera?) имел тактовый «поток» слева направо и снизу вверх, так как только непосредственным соседям нужно было общаться (вроде Разнообразие глобально асинхронных локально синхронных).
Пол А. Клейтон

Ответы:


1

Вы смешиваете две независимые (ортогональные) идеи в теории цифровых схем: асинхронные схемы и многоядерные процессоры.

Асинхронные схемы: схемы, которые имеют более одного тактового генератора, и тактовые импульсы асинхронны (то есть имеют непостоянное и непредсказуемое фазовое отношение).

Некоторые схемы могут использовать два такта (например), но один - это просто деление на 2 от другого. Эти схемы не являются асинхронными, поскольку между двумя тактовыми генераторами существует известная фазовая зависимость, хотя частоты тактовых импульсов различны.

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

Асинхронные схемы - главная тема в цифровом дизайне. Приведенное выше объяснение является основным.

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

Обычная практика - сделать ядра как можно более независимыми с точки зрения часов / мощности / исполнения / и т. Д. Это позволяет динамически (во время выполнения) регулировать активность процессоров (т.е. потребляемую мощность) в соответствии с фактическими потребностями системы.

У меня сложилось впечатление, что вы ищете объяснение многоядерных процессоров , а не асинхронных схем.

Эта тема намного, намного больше, чем что-либо, что можно вставить в ответ.

Ответы на ваши вопросы, хотя:

  1. Часы, используемые разными ядрами (насколько мне известно), имеют одни и те же источники (их может быть несколько: кристалл, VCO, ...). Каждое ядро ​​(обычно) имеет несколько взаимно-асинхронных наборов часов. Каждое ядро ​​имеет специальную логику стробирования и регулирования тактовой частоты, которая позволяет отключать или замедлять тактовую частоту независимо для каждого ядра. Опять же, если вас интересует только алгоритмический аспект параллелизма ядер - забудьте о часах (пока).
  2. Вы только что указали главный аспект параллельности сердечников - как запускать несколько ядер параллельно эффективно . Эта тема огромна и содержит решения HW и SW. С точки зрения HW, ядра модифицируют общую память и обмениваются управляющими и статусными сигналами с логикой последовательности и между собой. Картина сильно усложняется из-за наличия кешей - я бы посоветовал начать с чтения на кешах, затем на когерентность кеша и только потом на кеш в многоядерных системах.

Надеюсь это поможет.


Тот факт, что процессоры должны работать с разной скоростью, не означает, что они должны быть асинхронными. Наличие окна вокруг каждых часов, когда сигналы гарантированно не меняются, чрезвычайно полезно. Даже если два модуля имеют тактовые частоты, которые не кратны друг другу, может быть полезно, чтобы оба генерировались устройством, которое гарантирует, что они никогда не переключатся слишком близко друг к другу.
суперкат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.