LINUX.ORG.RU

Как происходит работа ядер многоядерного процессора, последовательно или параллельно?

 


0

4

на трубе смотрел ролик и докладчик медленно, как будто специально, рассказывал - что на каждый импульс (как я понял тактовой частоты), в многоядерном процессоре работает одно ядро. т.е. первый импульс, тактирует/дергает первое ядро, второй второе, третий третье и т.д. по кругу.
Но что то не смог найти внятного объяснения в поисковиках что это именно так.
интересно прям как на самом деле.
всегода думал что ядра работают параллельно, а может оказаться что по очереди.
И с точки зрения программирования, если потоки задачи на разных ядрах, ломанулись в кэш за одной и той же переменной (параллельная работа ядер), то кто разрулит ситуацию, чтобы лбами не столкнулись потоки? при поочередной работе ядер понятно - первое заняло, (выставило лок условно). Затем второе обратилось - увидело лок и ждет. это я утрировано описываю как представляю.
Просьба поделиться инфой по поводу параллельной или последовательной работы ядре многоядерного процессора?

★★★★

Последнее исправление: Vlad-76 (всего исправлений: 1)

на трубе смотрел ролик

Поделись ссылкой.

всегода думал что ядра работают параллельно

Ну вообще да.

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

https://ru.wikipedia.org/wiki/Когерентность_кэша

devl547 ★★★★★
()

Я бы назвал это последовательно параллельным процессом. Параллельно задачи не могут выполняться , результаты всё равно нужно как то объединять или использовать. Но некоторые процессы можно разделить между ядрами для параллельного выполнения по общим тактам. Это я так , для примера , из головы взял )) Скажем так , пока одно ядро умножает два на два , второе ядро рисует вам фигу на случай если вы ответите пять ))

symon2014 ★★
()
Последнее исправление: symon2014 (всего исправлений: 1)

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

Не, не может. Они работают параллельно. Считай, что это независимые процессоры с общим кэшем какого-нибудь уровня и общим доступом к памяти и I/O.

hateyoufeel ★★★★★
()

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

Или что-то ты не так понял или чепуху сказали.

Подумай сам, если бы это было так, то скорость работы отдельного ядра была бы обратно пропорциональна числу ядер. В чем вообще был тогда смысл многоядерности?

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

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

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от Vlad-76

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

Ты не в ту сторону копаешь. Размер ядра гораздо меньше, чем время прохождения импульса через него даже при частоте в 5ГГц.

Т.е. да, проблема синхронизации имеет место, но не настолько, чтобы это было головной болью программиста.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Vlad-76

Я не смотрел это видео. Но простая тупая логика подсказывает , что даже якобы параллельными процессами должен кто то руководить. И тогда о "параллельности " можно забыть. Можно поручить нескольким ядрам выполнить какой то несложный процесс за те же самые такты.

symon2014 ★★
()
Ответ на: комментарий от hateyoufeel

Размер ядра гораздо меньше, чем время прохождения импульса через него даже при частоте в 5ГГц.

5 ГГц это 2e-10с период. Скорость света 3е8 м/с. Получается, за время импульса он проходит 6е-2 м или 6 см. Вообще-то уже сравнимо с размером кристалла. Впрочем, разработчики процессоров не дураки, и о задержках распространения сигнала знают лучше нас. Собственно, проблемы синхронизации цифровых цепей возникают даже на низкочастотных схемах, и борьба с этим в соответствующей литературе вполне рассматривается. И уж точно это не забота программиста.

В общем, скорее всего, ТС что-то неправильно понял: отдельные ядра и отдельные процессоры работают параллельно и независимо. Они могут синхронизироваться по внешним схемам (кеши, таймеры), но в остальном… да у них даже тактовая частота отличаться может.

COKPOWEHEU
()
Ответ на: комментарий от COKPOWEHEU

5 ГГц это 2e-10с период. Скорость света 3е8 м/с. Получается, за время импульса он проходит 6е-2 м или 6 см. Вообще-то уже сравнимо с размером кристалла.

Ага, только ядро меньше. Плюс, сейчас в каждом ядре свой тактовый генератор. Иначе нельзя было бы менять частоту каждому отдельному ядру.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Плюс, сейчас в каждом ядре свой тактовый генератор. Иначе нельзя было бы менять частоту каждому отдельному ядру.

Меняется не частота, а множитель. Строго говоря, тактовые частоты сейчас несколько виртуальные. Реальная - это 100 Мгц, даже не 133 или 166 как когда-то.

praseodim ★★★★★
()
Ответ на: комментарий от hateyoufeel

Началось все с удвоения, учетверения, иногда утроения и т.д. частоты. Это не совсем настоящая частота, внутри процессора нет никакого генератора на 5 ГГц. Есть разбиение импульса (тактового периода) на участки на которых происходит переключение транзисторов. Без умножения частоты переключение происходило один раз за период. Причем там есть разные участки схем под разную часть, вроде не все сразу переключаются.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Началось все с удвоения, учетверения, иногда утроения и т.д. частоты.

Да, я тоже википедию читать умею.

Есть разбиение импульса (тактового периода) на участки на которых происходит переключение транзисторов.

В итоге, внутри есть блок транзисторов, который умножает внешнюю частоту и выдаёт импульсы внутрь. Чем это отличается от того, что я описал?

hateyoufeel ★★★★★
()
Ответ на: комментарий от praseodim

Меняется не частота, а множитель

Нет, меняется именно частота.

Множетель это параметр pll блока который изменяет частоту. Ему на вход подаётся одна, а на выходе другая. Он умеет умножать и делить частоту.

ox55ff ★★★★★
()
Ответ на: комментарий от Vlad-76

Товарищ бредит. Даже без знания внутреннего устройства современных CPU, чисто логикой. Если у тебя в процессоре 4-е ядра каждое из которых работает на частоте 3GHz, то по его «модели» мультиплексор подающий управляющие сигналы должен работать на частоте 12GHz.

Сейчас столько придурков развилось которые бред несут, аккуратнее себе выбирайте учителей.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от praseodim

Строго говоря, тактовые частоты сейчас несколько виртуальные. Реальная - это 100 Мгц, даже не 133 или 166 как когда-то.

Что вы понимаете под реальной частотой? Внешнее тактирование что ли? Так оно ни на что не влияет. Даже в микроконтроллерах внутри стоит множитель. Выполнение нескольких инструкций за такт? Это возможно, но не 5000 штук, а хорошо если 1,5. Ограничение скорости работы не частотой ядра, а доступом к памяти? Так тоже нет, оно ж от задачи зависит.

Это не совсем настоящая частота, внутри процессора нет никакого генератора на 5 ГГц. Есть разбиение импульса (тактового периода) на участки

Это не разбиение на участки, а полноценный ФАПЧ (PLL) - высокочастотный генератор с обратной связью, чтобы его частота, деленная на какой-то коэффициент, была равна внешней. Посмотрите на схему тактирования какого-нибудь микроконтроллера, да хоть gd32vf103: https://karakatitsariscv.github.io/files/clock.png

COKPOWEHEU
()
Ответ на: комментарий от praseodim

Это не совсем настоящая частота, внутри процессора нет никакого генератора на 5 ГГц. Есть разбиение импульса (тактового периода) на участки на которых происходит переключение транзисторов.

И как разбить импульс на участки без отдельного генератора? Поделить-то частоту логикой можно, а вот умножить уже нет.

i-rinat ★★★★★
()
Ответ на: комментарий от Vlad-76

Докладчик не в ладах с логикой. Тактовые импульсы у него ходят по ядрам последовательно, но ядра при этом как-то сами работают, когда импульс от ядра уже ушёл. Это какое-то магическое мышление. Вот как-то так оно там работает, а как работает, он не понимает и понимать не особо-то и хочет. Вполне возможно, что у него в голове перепуталось взаимодействие питоновского GIL с многопоточностью и многоядерность процессоров.

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

Данные докладчика о времени исполнения инструкций в тактах застряли во временах 80386 и 80486.

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

i-rinat ★★★★★
()

в многоядерном процессоре работает одно ядро … первое ядро, второй второе, третий третье и т.д. по кругу

Но зачем тогда нужны несколько ядер, если они всё равно работают по очереди, со скоростью одного? В чём смысл?

Хотя… Может, такие ролики — это ойтишный вариант ведра компрессии?

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Это какое-то магическое мышление. Вот как-то так оно там работает, а как работает, он не понимает и понимать не особо-то и хочет.

Обычное дело, когда начинаешь изучать IT с питона

alex1101
()
Ответ на: комментарий от COKPOWEHEU

Это не разбиение на участки, а полноценный ФАПЧ (PLL) - высокочастотный генератор с обратной связью, чтобы его частота, деленная на какой-то коэффициент, была равна внешней. Посмотрите на схему тактирования какого-нибудь микроконтроллера, да хоть gd32vf103:

Может я запутался уже. Но тогда от процессора бы хотя бы небольшое, но радиоизлучение исходило на гигагерцовых частотах. Что-то вроде такого нет.

praseodim ★★★★★
()
Ответ на: комментарий от Vlad-76

До конца видео не досмотрел. Автор куда-то широко растёкся мысью по мысли, что смыл исчез. Может он рассуждал о ситуации, когда все ядра выполняют код, постоянно требующий обращения к ОЗУ (промах кеша) и этот его «импульс» — это поступление данных в кэш...

mky ★★★★★
()
Ответ на: комментарий от praseodim

Но тогда от процессора бы хотя бы небольшое, но радиоизлучение исходило на гигагерцовых частотах.

В BIOSах давно уже есть настройка Spread Spectrum.

gag ★★★★★
()
Ответ на: комментарий от praseodim

Может я запутался уже. Но тогда от процессора бы хотя бы небольшое, но радиоизлучение исходило на гигагерцовых частотах. Что-то вроде такого нет.

А вы измеряли? Сколько там того излучения будет с микронных дорожек, по которым текут микроамперы тока, да еще в разных направлениях, да еще сквозь корпус, радиатор и все остальное.

COKPOWEHEU
()
Ответ на: комментарий от praseodim

Тактовый сигнал — меандр. Конечно, у него есть фронт, он ненулевой, есть какой-то звон даже. Но как это на 45 ровных частей по времени поделить-то?

i-rinat ★★★★★
()
Ответ на: комментарий от COKPOWEHEU

Вообще-то измерял где-то в нулевых еще у 4-го пня. Но может хз, действительно слабый очень сигнал. Не совсем я, просто в лаборатории был осциллограф, умевший в гигагерцы и просто на проволоку пытались поймать. Какая-то ерунда выходила. Излучало вообще-то что-то, может сотовые. Но как бы процессор не выделялся.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

Меняется не частота, а множитель. Строго говоря, тактовые частоты сейчас несколько виртуальные. Реальная - это 100 Мгц, даже не 133 или 166 как когда-то.

А кроме Intel процессоры больше никто не выпускает? Да и у Intel частота каждого ядра разная, хоть и кратная 100 MHz. И нужен этот reference cycle для упрощения синхронизации.

VIT
()
Ответ на: комментарий от VIT

То есть разные части одного ядра на разных частотах? Скажем АЛУ на одной, а какие-нибудь шины на другой? Так это вроде и у Intel есть. Говоря про частоту процессора все же, как я понимаю, имеют ввиду частоту АЛУ в первую очередь.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Вообще да, разные части одного ядра могут работать на разных частотах, но обычно пониженную частоту делают для cache, в не ALU. Хотя я имел ввиду, что разные ядра работают независимо. Есть такое понятие - power domain - в нём частота одна на все устройства. Как он устроен у разных производителей и устройств и что включает в каждом случае тема долгая.

VIT
()
Ответ на: комментарий от bcon

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

bcon
()

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

bcon
()