LINUX.ORG.RU

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

 


0

4

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

★★★★

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

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

Частота ядер может и бывает разная, о каком-то одном импульсе речи быть не может

П.С. по ссылке можно глубже копнуть тему https://youtube.com/playlist?list=PLnseyzyGdZdfv8H7LkvyVVE33fbBZaSdH&si=g...

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

У них нет reference cycle в 100 MHz.

В документе https://wiki.raptorcs.com/w/images/8/89/POWER9_um_OpenPOWER_v20GA_09APR2018_pub.pdf упоминаются частоты:

  • Clocking
    • Reference clocks
      • 133 MHz core/nest
      • 100 MHz PCI
      • 156 MHz optics
      • 16 MHz TOD

Нет Reference cycle, говоришь?

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

Молодец, хоть и не в тему, но всё равно молодец. Всё правильно, разные подсистемы работают на разных частотах. У нас с @praseodim с этим разногласий не было. Речь шла про наличие в x86 архитектуре единого для ядер источника (кстати называемого tsc - time-stamp counter). В вашем примере подобную роль мог бы играть TOD, кстати, раз уж вы сами про него сказали, не добавите пару слов, как он используется в архитектуре Power?

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

А, ну ясно, очередной умник. Ты вообще неправильно понял, о чём была речь, и на основе неправильного понимания полез поучать. И это прогрессирует:

В вашем примере подобную роль мог бы играть TOD, кстати, раз уж вы сами про него сказали, не добавите пару слов, как он используется в архитектуре Power?

Таким тоном учебники пишут, а не с людьми общаются.

i-rinat ★★★★★
()

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

Define «столкнулись лбами»

seiken ★★★★★
()

В моём понимании, работать по очереди они могут при обращении к памяти например. Шина и контроллер памяти одни на всех как-бы - один получает данные, другие курят бамбук в этот момент. Там, где нет драки за кэш/память, всё параллельно работает.

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

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

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

тридцать лет опыта разработки

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

Вернёмся к вот этому моменту:

Речь шла про наличие в x86 архитектуре единого для ядер источника (кстати называемого tsc - time-stamp counter).

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

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

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

Ну и кто Вы после всего этого? Клоун, клоун и есть. Можете продолжать обижаться. Вот Вам и шоу, как просили.

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

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

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

Речь шла про наличие в x86 архитектуре единого для ядер источника (кстати называемого tsc - time-stamp counter)

Это аналог risc-v-овского системного таймера?

Там стандартом указано обязательное наличие периферие-подобного таймера с регистрами счета time (time_hi:time_lo), сравнения timecmp (timecmp_hi:timecmp_lo) и настройки. В том числе и настройки его тактирования. Таймер, очевидно, общий для всего процессора. В отличие от CSR-регистрв вроде mcycle или minstret, которые специфичны для каждого ядра.

Какова там специфика во «взрослых» системах не знаю, но в контроллерах этот systick расположен отдельно и от обычной периферии (она по адресам от 0x4000 0000, а таймер где 0xE000 F000, где 0xD100 0000), и от ядерных вещей.

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

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

Судя по всему, VIT обиделся так сильно, что теперь решил не отвечать ни на чьи вопросы. Ну или вопрос слишком прямой, и тут не над чем «вместе посмеяться».

Это аналог risc-v-овского системного таймера?

И да, и нет. В x86 куча наследия, и там всё сложно. Поэтому там про любой аспект можно сказать, что как бы да, но не на каждом представителе x86. Да в том смысле, что если x86 процессор — от Intel и относительно новый, то есть не старше где-то 10-12 лет, то там есть возможность записать в MSR IA32_TSC_DEADLINE желаемое значение, по достижении которого счётчиком TSC ядро получит прерывание. Нет в том смысле, что это не отображённый на память регистр и не внешний таймер, а некая сущность, специфичная для каждого ядра. Нет в том смысле, что нет гарантий, что TSC увеличивается на заданное число за секунду, как с mtime. Скорость TSC разная у разных моделей, зависит от номинальной частоты проца, но у современных процессоров она хотя бы не меняется во время работы. У каких-то там старых процессоров скорость изменения TSC была привязана к текущей частоте ядра. AMD даже выпускали утилиту Dual-Core Optimizer, которая постоянно синхронизировала счётчики обоих ядер.

i-rinat ★★★★★
()

что то бредово как то. какой еще «импульс»? о чем ты вообще? ядра работают паралельно, другое дело что «ядро» это совокупность вычислительных блоков, там есть как общие блоки так и независимые. ядра считаются по alu которые работают паралельно.

antech
()