LINUX.ORG.RU
ФорумTalks

Когда N одноядерных процессоров лучше одного процессора с N ядрами?

 ,


1

1

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

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

Собственно я прав? Или есть ещё случаи когда N одноядерных процессоров лучше одного процессора с N ядрами?

Deleted

Ответ на: комментарий от anto215

А вообще-то царя кастуй

А это что ещё за покемон?

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

Зато у N процессоров N кэшей =)

Которые сбрасываются по каждому сигналу перекрытия страниц памяти :)

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

rezedent12 ☆☆☆
()

На N одноядерных процессоров можно повесить N систем охлаждения вместо одной. Поэтому всегда, если остро не стоит вопрос энергоэффективности.

Myau ★★★★
()

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

Например, N секретарш в N офисах в федеральной сети магазинов.

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

Но частота всегда давала прирост скорости в рамках одной архитектуры, а ядра дают прирост скорости далеко не всегда.

lenin386 ★★★★
()

когда шина между процессорами шустрее, чем между ядрами. но это уже фантастика)

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

Вот когда поменяют архитектуру, будет прирост, пока всё топчется на месте.

petyanamlt ★★★★
()

Да ладно, неужели на заре корыдуба её никто не сравнивал с какой-нибудь двухпроцессорной конфигурацией на P4 аналогичной частоты?

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

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

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

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

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

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

«Меньший прирост» - не значит «меньшую скорость». И по каким словам искать это чтиво?

rezedent12 ☆☆☆
()

На основе этого у меня сложилось впечатление, что если у нас есть возможность запихать в один процессор N ядер,

Вот-вот... если есть возможность. Кристалл не резиновый.

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

Процессор: рабочие частоты процессоров сейчас достигают 5 ГГц. По заявлениям производителей, схемотехнические решения (конвейеры, предсказания и прочие хитрости) позволяют выполнять одну инструкцию за такт. Для округления расчетов возьмем значение тактовой частоты в 4 ГГц что даст нам одну операцию за 0,25 нс.

Оперативная память: возьмем для примера оперативную память нового формата DDR4-2133 с таймингом 15-15-15.

Дано:

процессор Fтакт = 4 ГГц Tтакт = 0,25 нс (по совместительству время выполнения одной операции «условно»)

Оперативная память DDR4-2133 Fтакт = 1066 МГц Fдата = 2133 МГц tтакт = 0,94 нс tдата = 0,47 нс СПДмакс = 2133 МГц * 64 = 17064 Мбайт/с (скорость передачи данных) tRCmin = 50 нс (минимальное время между двумя активациями строк)

Время получения данных

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

Для оперативной памяти ситуация похуже:

— время выбора строки составляет: 15 clk * 0,94 нс = 14 нс — время до получения данных с команды выбора столбца: 15 clk * 0,94 нс = 14 нс — время закрытия строки: 15 clk * 0,94 нс = 14 нс (кто бы подумал)

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

14 нс — данные находятся в уже выбранной строке; 28 нс — данные находятся в невыбранной строке при условии что предыдущая строка уже закрыта (блок в состоянии «idle»); 42-50 нс — данные находятся в другой строке, при этом текущая строка нуждается в закрытии.

Количество операций которые может выполнить (вышеобозначенный) процессор за это время составляет от 56 (14 нс) до 200 (50 нс смена строки). Отдельно стоить отметить что ко времени между командой выбора столбца и получением всего пакета данных добавляется задержка загрузки строки кэша: 8 бит пакета * 0,47 нс = 3,76 нс. Для ситуации когда данные будут доступны «программе» только после загрузки строки кэша (кто знает что и как там накрутили разработчики процессоров, память по спецификации позволяет выдать нужные данные вперед), мы получаем еще до 15-и пропущенных тактов.

https://habrahabr.ru/post/281929/

Посчитаем:

17064 Мбайт/с / 8 ядер = 2133 Мбайт/с на ядро в оптимальном случае.

17064 Мбайт/с / (8 ядер * 200 пропущенных операций) = 10 Мбайт/с на ядро для вырожденного случая.

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

Вот-вот... если есть возможность. Кристалл не резиновый.

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

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

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

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

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

Тепловыделение, индуктивность - первое, что в голову приходит.
Больше кристалл - больше помех-ошибок. Разводка схемы - самое трудное.

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

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

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

Но ведь были же процессоры от амд с двумя-тремя ядрами, которые на самом деле были 4-х ядерные, просто некоторые ядра бракованные, и их отключали.

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

Верно, но даже там l3 кэш отключали целиком.

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

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

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

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

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

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

Vit ★★★★★
()

Иначе говоря, технология многоядерности «бьёт» технологию многопроцессорности

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

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

с другой стороны, производители могу мухлевать и делать некоторые модули (например, FPU) общими для нескольких «ядер», чего в случае физически отдельных процессоров сделать не получится

Harald ★★★★★
()

зависит от типа доступа к памяти.

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

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

а еще у них всего лишь одна память на всех. Так что тут минус.

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

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

Поясни.

rezedent12 ☆☆☆
()
Ответ на: комментарий от Deleted

А почему это увеличение размера кристала приведёт к росту брака?

Если разделять кристалл на блоки, то надо будет всего то отключить дефектные. Части кэша и ядра.

rezedent12 ☆☆☆
()

В многопроцессорных системах обычно каждый процессор имеет свой доступ к памяти.

Т.е. у 2х ядерного процессора к примеру шина доступа 64бит а у 2х одноядерных 128бит.

Так как обычно именно доступ к памяти узкое место, то обычно они побеждают многоядерный процессор.

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

например ты хочешь хотсвоп процессоров

Неужели это еще где-то используется? Если используется, то для чего? Ведь распределенная система даст большую надежность (правда для умеренного роста сложности ее архитектуру придется хорошо продумать).

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

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

Сейчас разные кеши и буферы занимают 95% площади процессора. Больше туда просто физически не напихать (при существующей технологии изготовления транзисторов).

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

Ты еще пруфы на круглую Землю попроси.

Справедливость теоремы Пифагора тоже много лет как общеизвестный факт. Что никак не мешает людям снова и снова приводить её доказательство. Хотя бы для тех кто об этой теореме слышит впервые.

Это много лет как общеизвестный факт.

Я - невежда, я об этом факте узнал недавно от Вас. Можно мне в порядке исключения привести ссылку на авторитетный источник который бы подтверждал Ваши слова? Просто быстрый факт-чекинг.

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

Курс это слишком круто, я хочу просто быстренько проверить и всё.

Deleted
()

N процов лучше чем N ядер в том случае, когда ФСБ или СБУ может конфисковывать оборудование. В этом случае, просто разносим процы на расстояние 20000км - и получаем беспределоустойчивый кластер.

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

Двухпроцессорные системы на пне-2 умели в такой режим: Один проц работает, а второй за ним следит. Как только первый проц сбоит, второй принимает управление на себя. На кой это нужно, я не знаю. Нынче поход «умерла, так умерла»

tiinn ★★★★★
()

http://www.thg.ru/cpu/core_scaling/print.html

Цитата: Результаты PCMark заставляют предположить, что конечный пользователь выиграет от увеличения количества ядер CPU вплоть до трёх, а четвёртое ядро, наоборот, немного снизит производительность.

Лет так 5 назад мы это обсуждали и я рассказывал как в университете демонстрировал преподавателю ОДНОПОТОЧНУЮ программу перемножения матриц которая обгоняла многопоточные (помоему около 10 раз). Все дело было в том, что при достаточно большой матрице потоки начинали воевать за кеш....

dmxrand
()

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

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