LINUX.ORG.RU

Многоядерность vs Многопроцессорность

 


1

3

в чем разница между многопроцессорной системой и многоядерной системой с точки зрения синхронизации?

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

Разные шины по скорости соединения и возможности разделения памяти. Обычно, такие вещи реализованы в железе и некоторые хаки на уровне ядра. Для userspace всё более-менее прозрачно. Естественно, это всё в общих чертах.

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

нееет, давай конкретнее, ссылаясь на инструкции процессора lock add и lfence

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

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

nickleiten ★★★ ()

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

Да.

hateyoufeel ★★★★★ ()

в чем разница между многопроцессорной системой и многоядерной системой с точки зрения синхронизации?

Man l3, man memory controller, почем память цепляется только на один камень, почему между процессорами нет не то что общего кеша, но и общей памяти.

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

На чём базируется кастыль для даунов под названием «синхронизация»?

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

между процессорами нет не то что общего кеша, но и общей памяти.

ты гонишь, анонимус. NUMA предоставляет процессорам отдельные банки памяти. Но большинство доступных машин (до 16-ти процессоров) построены по архитектуре SMP, где каждый процессор имеет доступ ко всей памяти через общую шину

источник - http://ru.wikipedia.org/wiki/Симметричная_мультипроцессорность

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

нееет, давай конкретнее, ссылаясь на инструкции процессора lock add и lfence

lock add и lfence

Что? И что я тебе должен о них рассказать, какой жопой они относятся к твоему вопросу?

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

что я тебе должен о них рассказать, какой жопой они относятся к твоему вопросу?

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

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

ты гонишь, анонимус. NUMA предоставляет процессорам отдельные банки памяти. Но большинство доступных машин (до 16-ти процессоров) построены по архитектуре SMP, где каждый процессор имеет доступ ко всей памяти через общую шину

Чё ты мне тут несёшь, нулёвое днище. Ты либо заткнись и слушай, либо не неси мне тут херню.

Если ты настолько тупой, что не отличаешь реальную общую память от эмуляции, то ты потерян.

Всем абсалютно покласть про какие говноархитектуры ты там начитался - есть штука, что память можно повесить только на один камень уже лет 10как.

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

anonymous ()

самое лучшее решение это многоядерная многопроцессорность с NUMA и построенный на этом кластер.

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

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

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

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

О да, больше даунов студентов в разделе. Перечитай свой вопрос.

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

С какой жопы они разные механизмы? Одно и тоже, лок типа более точечный. Как это к твоему вопросу вообще относится? Это детали реализации и там может быть что угодно - тебе о них никто не расскажет, хочешь что-то понять - иди тыкай.

Меня интересует, как это реализовано аппаратно (т.е. это же делает не кеш, не регистры, не алу, а какое-то специальное схемное решение, у которого стопудово есть своё маркетинговое имя)

А тебе какая разница? С чего это делает не кеш? Это задача в оснвонмо кеша. Что сие знание тебе даст? Максимум что ты там узнаешь об «аппаратное реализации» - это протухшие 20лет назад картиночки для детсадовцев.

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

не отличаешь реальную общую память от эмуляции

можно подумать, что ты знаешь, как QPI (QuickPath Interconnect) и IMC (Integrated Memory Controller) связаны между собой

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

они разные механизмы?

ты не поверишь, разные! и как раз lock нифига не точечный а весьма себе глобальный. А вот барьер влияет только на порядок выполнения команд (out of order execution)

Что сие знание тебе даст?

да вот наколенный компилятор пишу

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

а потом пришёл ржевск^wбыдлокдер и начался такой разврат...

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

можно подумать, что ты знаешь, как QPI (QuickPath Interconnect) и IMC (Integrated Memory Controller) связаны между собой

И какой же жопой они должны быть связанны? Какой жопой твоя QPI относится к реальной общей памяти? Что ты мне хочешь этим сказать? Ты реально какой-то даунёнок-студент. Ты хоть попытайся свой выхлоп как-то связывать.

Тебе сказали - общей памяти нет, подумай почему и в чем жопа. Даун начал курлыкать что они есть - дак объясняй почему она есть.

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

Ты вот анонимуса послушай, он хоть тебя и материт, но по делу.

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

Забей на этого анонимуса. Судя по стилю это тот же, у которого а unique_ptr есть reference counting.

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

он бестолковый. Вот что писали разработчики Intel (пять лет назад):

Each CPU of NUMA system can access two types of memories: local memory and remote memory. The local memory is the memory that is on the same node as the CPU, with low latency, while the remote memory is the memory that does not belong to the node of the CPU. CPU shall access to the remote memory through node interconnection, thus the latency will be longer than that of local memory.

From the perspective of software, remote memory and local memory are accessed in the same way

https://software.intel.com/en-us/blogs/2009/03/11/learning-experience-of-numa...

Он сейчас скажет, что он писал то же самое, что в этой цитате.

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

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

такой разврат

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

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

Тебе сказали - общей памяти нет

сказавшие неправы. Это потому что они много занимались отвёрточной сборкой и мало программированием

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

ты не поверишь, разные!

Датычё.

и как раз lock нифига не точечный а весьма себе глобальный.

Это проблемы реализации. Семантически он точечный. Тыж там кукарекал про механизмы.

На х86 всё говно куда не глянь с редкими проблесками.

А вот барьер влияет только на порядок выполнения команд (out of order execution)

Датычё. Прям разоблачил. Иди перечитай мануальчик.

да вот наколенный компилятор пишу

И какой жопой конпелятор связан с твоим вопросом? И с локами? Конпелятор имеет абсалютное доверие к исполнителю.

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

как компилятор связан с механизмами синхранизации?

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

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

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

Даун просто копипастит рандомные ссылки даже не понимая их значения.

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

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

Этот комплект называется cache. Погугли Illinois protocol.

Смотрю я на твои темы и комментарий к тебе, и всё больше убеждаюсь, что он не грубый, а точный.

i-rinat ★★★★★ ()

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

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

если бы на сайте был хоть один понимающий человек

Ты тут один понимающий. За такое время на ЛОРе пора было уже это осознать.

i-rinat ★★★★★ ()

Я за многоядерность, многопроцессорность с NUMA шибко усложняет написание быстрого кода, т.к. надо ещё помнить какая память локальная, а какая удалённая. Тогда уж лучше чистыми распределёнными вычислениями заниматься. А ещё GPU есть для задачек, которые очень хорошо параллелятся на элементарные операции.

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

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

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

Кстати, даунизм прям идеально подходит. Когда даун не понимает в теме и не отличает эмуляции от реальности, то происходит такое. Вот у дауна есть кастыль, который позволяет иметь непрямой доступ ко «всей» памяти - даун в упор не видит, что это фикция.

Так же с unique_ptr, где флаг владения совмещен с указателем. Даун просто копипастит сорец стл"а, даже не понимая что и откуда берётся. Там by design объеденены 2понятия - «есть объект» и «я полный владелец», ибо поинтер позволяет хранить флаг, ибо имеет невалидное значение.

И ты говоришь даунам - если память общая - дак прочитай рандомный кусок сам. Она же общая? Я же когда иду в общественный сортир имею к нему доступ. А не ссу в соседа, чтобы он поссал за меня.

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

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

да вот наколенный компилятор пишу

Зачем? Делать тебе больше нечего?

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

да вот наколенный компилятор пишу

компилятору о таких вещах заботиться не надо

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

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

На твоих? Соображают?

как размещать в памяти структуры данных и

Структуры данных. Структуры данных. Просто нахрен размещать структуры данных.

И какиеж такие «структуры данных» они тамр азмещают, и какой жопой это связанно с «механизмами синхранизации»?

как выполнять алгоритмы

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

Я уж думал эмулека с его «выравнивание бывает только на 16, ибо маллок выравнивает на 16» никто не переплюнет, а так же «латенси - это „время езды головок“ и в ссд латенси 0».

Кто вас таких родит? Неужели ты из какого маздайского халявного говновуза? Таких отбитых даже в пту нет.

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

компилятору о таких вещах заботиться не надо

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

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

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

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

нету таких инструкций, для x86 архитектуры

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

нету таких инструкций, для x86 архитектуры

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

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

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

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

какие такие «структуры данных» они там размещают ?

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

Indaril_Shpritz ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.