OSDev
http://osdev.su/

Многоядерность и распараллеливание (ассемблер)
http://osdev.su/viewtopic.php?f=18&t=1091
Страница 2 из 4

Автор:  pavia [ 15 май 2015, 15:53 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

Так не требуется остановка процесса/потока. Теоритически задержка будет не более 10-100 тактов.
А вот для остановки процесса и сохранения всех регистров. Требуется 1-4 мкс (600-3500 тактов) . Сохранение + запуск => умножаем цифры на 2.

При правильной организации выгодно предположим от 1000 элементов в массиве. Так что для сжатия картинки, и подавно видео выгодно.

Автор:  SII [ 15 май 2015, 16:42 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

panotnap писал(а):
Спасибо.
pavia писал(а):
1) Команд для работы с разными ядрамми в ассемблере нет.
Несколько обескураживает... А как же программисту распределять возможности многоядерных процессоров?


Многоядерный процессор -- это всего лишь несколько абсолютно независимых друг от друга процессоров, реализованных в виде одной микросхемы. Чтобы каждое ядро (каждый процессор) нагрузить работой, надо запустить несколько потоков. Если используется готовая ОС, поддерживающая многопоточность (Windows, например), то запуск потока делается соответствующим вызовом системного API. Если система не поддерживает многопоточность, но является многозадачной (UNIX), можно запустить несколько задач. Наконец, если ОС однозадачная или ОС нет вообще, но есть прямой доступ к оборудованию (программа пишется под "голое железо"), то надо смотреть, как именно запускать процессоры в работу -- изначально все процессоры, кроме одного, либо остановлены, либо крутятся в пустом цикле. В некоторых архитектурах для взаимодействия между процессорами существуют специальные команды, но в большинстве случаев "общение" идёт через общесистемный контроллер прерываний или каким-либо подобным образом.

Автор:  SII [ 15 май 2015, 16:45 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

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


Как обычно, несёте чушь и ахинею. Никаких сопроцессоров, работающих независимо от основного процессора, в АРМах нет; сопроцессоры -- это, по сути, просто расширения основного процессора, причём не всегда имеющие какие-либо инструкции вообще (например, сопроцессор 15 в классических АРМах -- это логика управления кэшами, MMU и т.п. вещами; его регистры являются аналогами управляющих и моделезависимых регистров в архитектуре IA-32).

Автор:  Freeman [ 15 май 2015, 17:40 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

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

Ситуация, типичная для самописных ОС, типа "Колибри". Одно время они хотели отдельное ядро для графики использовать.

Автор:  SII [ 15 май 2015, 18:06 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

Freeman писал(а):
Ситуация, типичная для самописных ОС, типа "Колибри". Одно время они хотели отдельное ядро для графики использовать.


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

Автор:  panotnap [ 15 май 2015, 19:00 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

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

Автор:  SII [ 15 май 2015, 19:09 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

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

Автор:  panotnap [ 15 май 2015, 19:14 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

SII писал(а):
Пока такой возможности (для процессоров общего назначения) не просматривается технологически, да и нужды в этом для обычных ПК и тем более всяких там смартфонов нет. Так что в обозримом будущем -- нет, а дальше -- дожить надо.

Хорошо, если так.
Просто если представить такую тенденцию, то нужно будет программировать всё несколько по-другому. Допустим, если окажется целесообразнее увеличить кол-во ядер, но уменьшить при этом их тактовую частоту, то в таком случае все ОС, заточенные под небольшое число быстрых ядер, полетят к чертям. А также распределение процессов по ядрам вместе с ними, так как они не справятся с потоками в одиночку.

Автор:  pavia [ 15 май 2015, 19:39 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

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

Проблем создать нет есть к примеру вот такая штучка с 60 ядрами. http://www.intel.ru/content/www/ru/ru/p ... etail.html
Там х86 процессоры. Можно сделать и больше, если ядра будут попроще.

http://ark.intel.com/products/84684/Int ... e-2_00-GHz
18 ядер в северном процессоре.

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

Автор:  Freeman [ 16 май 2015, 02:59 ]
Заголовок сообщения:  Re: Многоядерность и распараллеливание (ассемблер)

panotnap писал(а):
Просто если представить такую тенденцию, то нужно будет программировать всё несколько по-другому. Допустим, если окажется целесообразнее увеличить кол-во ядер, но уменьшить при этом их тактовую частоту, то в таком случае все ОС, заточенные под небольшое число быстрых ядер, полетят к чертям.

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

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

Одно понятно -- у этих процессоров архитектура будет точно не x86. Надеюсь, не надо объяснять, почему?

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/