andrzejn: (Default)
[personal profile] andrzejn
Одноядерные процессоры в персональных компьютерах морально устарели. Они останутся живы-здоровы в специальных устройствах, они ещё послужат лет двадцать в старых машинах, пока те не вымрут своей смертью, но впредь производительность настольных и карманных систем будет расти в основном за счёт параллелизма.

Сейчас мы пожинаем плоды переходного процесса.

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

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

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

Зато их программы начали блокироваться и глючить на одноядерных системах.

З-заразы.

Date: Thursday, 24 April 2008 07:29 (UTC)
From: [identity profile] shet.livejournal.com
Очень интересная тема. А можно пару примеров на пальцах: того что хорошо работает на одном ядре и плохо на двух, и наоборот? Я-то до это наивно думал, что бывает просто правильно и неправильно написанный мультитрэд...

Date: Thursday, 24 April 2008 07:51 (UTC)
From: [identity profile] ban-dana.livejournal.com
Поймете - расскажите, очень интересно.
Потому что, когда хорошо на одном и плохо на двух - это понятно, это вероятность race растет. А вот наоборот - это уже не понятно, потому что виснет - это, по идее, дедлок; но для дедлока нужна блокировка, а она работает и на мультиядре, т.е. там тоже должно виснуть...

Date: Thursday, 24 April 2008 08:23 (UTC)
livelight: (Default)
From: [personal profile] livelight
А как же инверсия приоритетов? Нормальный планировщик, если высокоприоритетный процесс ждет низкоприоритетного, разгоняет тот низкоприоритетный, чтобы высокоприоритетный дождался блокировки побыстрее. Не говоря уж о том, что нормальный планировщик (кроме специальных случаев) должен иногда пускать поработать хоть немного всех.

Date: Thursday, 24 April 2008 08:43 (UTC)
From: [identity profile] shet.livejournal.com
Забавно. "У нас в поликлинике был такой похожий случай". Обработчику очереди событий приходило событие "прекратить работу" и в процессе разбора этого события (собственно обработчик dispose-ился) обработчик успевал принять в себя следующее из очереди из-за чего всё было плохо. Только проявлялось уже на 2-ядерной машине, вот я про него и не вспомнил.

Date: Thursday, 24 April 2008 09:02 (UTC)
From: [identity profile] ban-dana.livejournal.com
А, тогда да.

Date: Thursday, 24 April 2008 13:58 (UTC)
livelight: (Default)
From: [personal profile] livelight
В старом добром C++ в таких случаях мне иногда счастливилось получать Pure virtual function called :)

Date: Thursday, 24 April 2008 08:11 (UTC)
From: [identity profile] al-zatv.livejournal.com
вапче-та крутые учёные придумывают всё новые и новые виды транзисторов. Вот как придумают что-нибудь революционное - пойдут тридцатитрёхгигагерцовые процессоры) На неотработанных технологиях делать несолько ядер - дорого выходит из-за вероятности брака.

А так как все к тому времени уже привыкнут к многоядерным процам, новые процы будут их аппаратно имитировать:))))

Date: Thursday, 24 April 2008 08:20 (UTC)
livelight: (Default)
From: [personal profile] livelight
Тогда ученые изобретут новые атомы :))

Date: Thursday, 24 April 2008 08:19 (UTC)
livelight: (Default)
From: [personal profile] livelight
> программировали многозадачность небрежно

Что значит "программировали многозадачность"? Писали реализацию спинлоков и семафоров? А кто такой экзотикой занимается, кроме авторов виртуальных машин и операционок?

Profile

andrzejn: (Default)
Андрій Новосьолов

October 2025

M T W T F S S
   1 2 3 45
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sunday, 5 October 2025 00:41
Powered by Dreamwidth Studios