Татарин>> Что ж тут нового?Татарин>> И то как есть - это хорошо. au> Это очень хорошо. Но у пользователя компа такого нет. И это плохо.
Как это нет?! А что же у меня (да и у всех) на столе-то стоИт?
Именно так и обстоят дела СЕЙЧАС.
Чего сейчас нет - так это массового параллелизма для пользовательских программ. То есть, процессорщики бы с радостью - им забот меньше, да только
реальная функциональность такого компа резко падает.
Я вот напомню одно интереснейшую (в контексте) историю недавних дней, про то, как IBM со своим PowerPC раньше, чем Intel в сторону многоядерности рванула. Масштабнейший эксперимент по проверки Вашей концепции на прочность... и таки да, весна показала, кто где срал. Была такая фирма Apple со своим независимым от мира ПЦ софтом, железом, подходом, архитектурой и очень большими возможностями по давлению на производителей софта. Так вот она в своих настольных компах начала первой использовать многопроцессорные системы и многоядерные процессоры (не по доброй воле, а из-за IBM, которая этой архитектурой свои задачи решала).
После невероятных усилий по доводке софта чтобы он использовал многозадачность (а задачи там были благодарные - мультимедия, обработка графики и видео) двуголовый "Эппл" кое-как дотягивал лишь до старших моделей тогдашних "пентиумов", безнадёжно проигрывая во всех остальных задачах. И это - при формальной разнице в производительности в разы в пользу PowerPC (ну, если сравнивать теоретические МФлопы и МИПСы).
Лишь чудовищным насилием над правдой маркетологи держали этот фронт несколько лет (и за это время "Эппл" завоевал себе... гм... неоднозначную репутацию и начал быстро терять даже свою долю рынка - рынка фанатов).
Чем закончилось всё это дело, помните?
Уже через пару лет инженерам была дана задача перестать ссать против ветра и развернуть технологическую платформу конторы в сторону x86. Результаты чего через ещё через год и продемонстрировали в натуре, и сейчас "Эппл" работает не на супер-многоядерных PPC (среди которых есть и 16-ти ядерные), а на Интелах, которые лишь сейчас до 4-х ядер добираются.
О чем это должно говорить зрячему, думающему инженеру? О том, что типичные пользовательские задачи, которые тот жаждет пускать на своем универсальном вычислителе, не любят мноогопроцессорности даже в её самом зачаточном варианте. Тут же нам предлагается перестроить в эту сторону всю индустрию и напихать кучу ядер не по нужде, а запросто так, за здорово живёшь. За чей счёт экспериментируем, Михал-Сергеич?
И главное, а какие причины ожидать иного результата на этот раз?
au> Вы думаете эти "универсальные" вычисления ничем не ограничены? Проверьте:
Разумеется, ограничены. Любую универсальную железку на конкретной задаче можно побить специализированной - по скорости, по снижению потребления, по цене. Это аксиоматично.
Но миру нужен некий стандартный универсальный вычислитель.
И вот моё утверждение состоит в том, что быстрый единичный процессор куда более подходит на эту роль, чем много процессорв (или ядер) с той же (или чуть бОльшей) суммарной производительностью.
Почему? Потому что всё, что можно выполнять на N ядрах, можно выполнять на одном с производительностью xN. Обратное строго неверно. Очень просто сделать из одного проца "как бы много", практически нельзя сделать из многих "как бы один".
au> - думаете количество одновременно исполняемых программ бесконечно? На чужом, вражеском компе зайдите в поиск по диску, найдите все ехе, выделите их и запустите одновременно. Посмотрите как там с многозадачностью будет
Я не думаю, что оно "бесконечно". Я думаю, что текущая система позволит запускать куда бОльшее количество процессов, чем та, которую предлагаете Вы. А поскольку большинство задач на типичном пользовательском компе жрут ничтожно мало процессорного времени и лишь некоторое количество дешевой памяти, пользователь в выигрыше.
Татарин>> - программы реагируют на действия пользователя и внешние события, абсолютное большинство времени код "простаивает", не исполняется.au> А вот тут у вас неозвученное предубеждение. Вы думаете что простаивающий проц — это зло, а может (слышал живьём однажды) даже что проц должен быть загружен постоянно, иначе зло
Нет. Это Ваше предубеждение, которое Вы приписываете мне.
У меня лишь некоторое практическое наблюдение: пользователю в каждый момент времени нужна лишь программа, с которой он непосредственно работает, которая откликается на его, пользователя, действия.
Если пользователю нужно делать нечто с постоянной нагрузкой, без его вмешательства, в фоновом режиме, то пользователю легче поставить спец-железо под это дело. Вот как у меня сейчас: я пишу это на ноутбуке, а отдельный рутер - роутит и качает торренты.
Найдите какую-нибудь мощную вычислительную задачу, которая необходима типичному пользователю в фоновом режиме на его личном персональном вычислителе? и чтобы таковая не выполнялась бы
уже отдельным процом?
Про чистые числогрызы я вообще буду молчать: недаром для строительства "универсальных" и дешёвых выбирают самые мощные на текущий момент процы (хотя, очевидно, что отношение производительность/цена куда лучше у "середнячков", причём, часто лучше в РАЗЫ!).
Казалось бы, вот уж где должна работать Ваша философия и подход к архитектуре - ведь за ту же цену можно было бы получить на десятки процентов (а то и в разы) более высокую производительность на ровном месте. Ни за что.
Однако же...
au> На одном небольшом чипе можно иметь сотню мелких процев под всякие мелкие задачки, каждый со своей памятью, и они будут надёжно исполнять их, и не мешать ни друг другу, ни пользователю — и всё в реальном времени. А когда не будут исполнять, их можно выключать вместе с их памятью, и они не будут потреблять ничего. И почему эта тема возникла: если они на МРАМе, то они статичны.
А есть такие чипы - то ли от TI, то ли от AD, не помню... с кучей мелких процов. Вот как по-вашему, почему никто даже не пытается сделать телефон на таком чипе?
У меня есть тому простое и понятное объяснение: типичная пользовательская задача проще реализуется на одном мощном ядре. Что угодно - от текстового процессора до игрушки проще программировать "линейно".
Татарин>> Совершенно очевидное и правильное решение - вынести все такие задачи на ОДИН вычислительau> По какому параметру правильное? Вы одним махом усложняете задачу разработчика с тривиальной до как сегодня; закрываете ему доступ к железу, потому что там уже нужна ось и она будет рулить, а не вы;
Разработчику сегодня не нужен доступ к железу. Напротив, разработчики сегодня прилагают огромные усилия чтобы от железа по возможности отгородиться и не знать чужих проблем (причины этого опустим, я просто напоминаю, что они существуют и очень разумны). Вот у Ромы спросите - нужен ему доступ к железу, когда он программирует свой сайт на Яве? ну или у меня спросите: нужно ли мне доступ к железу на телефоне чтобы записать во флеш или я всё-таки предпочту API, единый для всех моделей?
Некоторые встроенные применения, где софт и железо делаются однажды и составляют единое целое раз и навсегда - лишь малая доля того, что нужно людям от софта и железа.
Татарин>> Умножение маленьких ядер для универсальной машины - абсолютно и полностью контрпродуктивно.au> По какому параметру?
- по конечной производительности системы на типичных реальных задачах;
- по простоте программирования.
au> И по этой логике большой чип — лучше, потому что даже один битый транзистор на миллиард отправляет в брак весь чип?
Нет. По этой логике не нужно множить транзисторы на чипе, они не бесплатны. У этого умножения есть свой более-менее разумный компромисс по экономике, и он хорошо виден: при текущих технологиях это что-то типа миллиарда транзисторов на чип. Ну, или что-то около того.
au> Ну так делать надо с умом, а не тупо. Связали кучу ядер в одном чипе, потому что это удобно производителую чипа. Связали кучу памяти в других чипах, потому что это удобно производителю памяти.
DRAM и процессоры не очень хорошо совмещаются по технологии. Было же уже - "умная память", вполне вписывалось в наличные архитектуры, давало серьезные преимущества в скорости для серверов (а там деньги крутятся достаточные, чтобы можно было позволить себе поэкспериментировать). Как думаете - почему не пошлО-то?
au> Ничего элементарного в этом нет. К тому же это зависит от алгоритма, а не от его применения. И эти алгоритмы работают в весьма ограниченных по ресурсам машинах — хорошо работают.
Блин. Что значит "в весьма ограниченых", что значит "хорошо работают"?
"- Петька, приборы?! - 15!!! - Что 15? - А что приборы?"
Как только исходные данные для распознавания могут поместиться в память машины - да, все работает. Но я же про это и говорю - не надо ограничивать машину в доступе к памяти. Это сужает круг возможных решаемых задач.
>> Или игрушка типа "стрелялка".au> Работает со времён амиги и синклера до сего дня. И такие проги всегда лучше делать в машине, где доступно всё.
Синлер - однопроцессорная машина классической архитектуры. Которой была доступна вся память.
>> Или моделирование Максвелла в неоднородной и сложной среде.au> Не могу проверить, но думаю и тут вы неправы.
Думайте, но факт остаётся фактом: если последующие вычисления зависят от результата предыдущих, то выгоднее иметь один мощный проц с производительностью Ы, чем N по Ы/N. Выгоднее ровно в N раз, и это очевидно, обсуждениям даже не подлежит.
au> Сложность вычислений не упрощается сложностью архитектуры, а очень наоборот.
А почему? У меня вот есть куча контрпримеров... но я сначала хочу послушать обоснования этому странному тезису.
>> Или спелл-чекинг в большом документе.au> Если даже пунктуацию проверять хотите. Нету предложений длинной в тыщу слов. Туман напускаете
Зато есть словари в 250000 слов с морфологией и формами. Какой уж тут туман...
au> О разах ли? Если он получает 200к в год, платит налогов 80к, и ему остаётся 120к, то предложение 220к без налогов ему неинтересно? Давайте спросим у наших программеров, как они отнеслись бы к такому предложению?
Речь не о том, согласится ли Вася на зарплату в +10%.
Речь о том, сможет ли этот Вася, даже после этой доплаты, выполнять более сложную работу в сроки. Количество таких Вась ограничено.
au> Затем, чтобы сделать надёжный комплекс с малым потреблением и большими возможностями — то что невозможно сделать иначе. Вам нравится качество кода, где один дефект на несколько десятков строчек? Некоторых оно не устраивает, и вас оно тоже не устроит, если этот код будет управлять самолётом, в котором вы летите. Вы сразу захотите программистов, мастерски владеющих
Да. И такие программисты есть, и такие системы делаются.
Знаете, сколько они, эти системы, стОят?
Они много стОят.
Очень много.
Игрушка, сделаная по таким правилам, Вам будет просто не по карману. И вот тут ребром встаёт вопрос: вам нужно так или никак? И миллионы фанатов игр орут: да! нам нужно так и СЕЙЧАС! а фикс даже известных багов потом, через полгода выпустите!
И индустрия покорно выполняет запрос. В сроки и по ценам, которые всех удовлетворяют. И с качеством, которое в целом всех более-менее устраивает, ибо любой незашоренный человек видит, что тут налицо простой компромисс.
А не проблемы архитектуры.
au> И ещё забавный эпизод: лодка Deep Blue Sea, где авторы сознательно и решительно отказались от всякой автоматизации, потому что она абсолютно ненадёжна и они не хотят булькнуть из-за "универсального вычислителя" и "неограниченного программирования". Что-то не так с приоритетами, не находите?
По-моему, всё так.
Замечу, их-то никто в выборе архитектуры системы и стиля программирования не ограничивал. Если люди трезво оценивают свои возможности и возможности доступного им железа, это следует только приветствовать.
Гораздо хуже, если бы они взялись делать и проволындались бы полгода с автоматизацией вместо того, чтобы делать лодку. И ещё хуже, если бы они взялись, сделали, но лодка бы после этого "булькнула". С экипажем.
Мы живем в реальном, неидеальном мире. И обязаны учитывать это.