Вот один народ придумывает, придумывает...
другой народ ведется и ведется...
Поясняю - почему взяла вверх "многоядерность" (постараюст объяснить как можно проще, что бы не грузить терминами, так что "специалисты" - не понтоваться, что знаете мега-слова, от которых у других уши в трубочку заворачиваются):
инженеры в своё время столкнулись примерно со следующим (цифры условны - все зависит от техпроцесса, архитектуры, но для понимания - вполне подходят)- прирост частоты на 30% увеличивал энергопотребление в 2 раза. В 2 раза - это на 100%.
Если вспомним математику, то станет ясна основная проблема:
что бы увеличить производительность процессора "ломовым способом" (просто увеличивая частоту) в 2.2 раза (1.3*1.3*1.3=2.197) - энергии сей продукт будет потреблять в 2*2*2=
8 раз больше!
Такой расклад, естественно, никого не устраивал и придумывались всякие "выходы" - улучшение техпроцесса, некоторая оптимизация архитектуры (хотя тоже спорный момент - зачастую выливалось увеличением длины конвейера и вследствие этого - бОльшими потерями из-за простаиваний при неправильном предсказании - в нынешних CPU используется упреждающий подсчет), но в итоге достигнув какого-то предела НИР компаний поставило перед фактом: "или делаем по 2 ядра, или - прирост будет по 10-20% в год". Естественно 10-20% прирост производительности в год никого не устраивал и началась мега-пиар кампания про то что "многоядерность - это ОЧЕНЬ хорошо".
Но вот эта хорошесть... почему-то давала выигрыш только в синтетических тестах. На практике - люди "удвоения мощности" попросту не видели, Intel это дело усугубило выпуском Pentium D, некоторые модели которой в нагрузке грели не хуже конфорок
.
А вся проблема оказывалась в том, что
производители ПО "не успевали за архитектурой". Бред. Учитывая отсутствие компилятора (а ведь это как-никак задача тех кто выпускает продукт, возможности которого "почему-то" никто не использует), который мог бы раскладывать на потоки (это отдельная тема - здесь мы её коснемся весьма косвенно) - все стало возлагаться на умы и ручки программистов. И вот тут самая большая проблема - как распараллелить логику. Приведу пример. Простой. Архиватор.
WinRAR. Думаю он всем знаком. Если нет - странно что вы дочитали до этих строк.
Итак. Архивация, на самом деле - процедура,
очень легко распараллеливающаяся. Ведь очень просто - одна "задача" архивирует один файл, другая - второй, третья - третий, четвертая - четвертый... и так далее - можно загрузить хоть "мильён" ядер. Но вот любознательные пользователи знают, что эта лёгкость - только при
простом архивировании. Но есть так называемый "
solid" архив (
непрерывный архив), где архивация каждого последующего файла - зависит от результата архивации предыдущего, а точнее предыдущих (не хочу грузить - кому станет интересно - пусть обратится описанию методам архивации). И вот тут сталкиваемся с тем, что... второе (третье/десятое) ядро попросту простаивает...
На самом деле в том же Winrar эта проблема уже решена и даже при таком методе загружаются все ядра - но поверьте - для этого потребовало переработать код архиватора
ПОЛНОСТЬЮ (правда и многоядерная версия (3.50) вышла намного позднее многоядерных CPU). А вот теперь спросим из-за чего? А всё из-за того что все стали покупать пропиаренные многоядерные и надо было идти "в ногу со временем".
Выигрыш от многоядерности изначально получили лишь сервера, которые и до этого ставили несколько процессоров, а тут получили реализовать ту же мощность - но "на одном кристалле" (хотя и тут поджидали подводные камни, например в лицензировании, - кое-кто считал только количество сокетов, а кто-то - количество ядер - и разница при этом была колоссальная).
Кто ещё... дизайнеры... причем далеко не все - а например... пользователи 3D Max... Photoshop... а те же инженеры со своими AutoCad, SolidWorks, Catia и т.д. и п.т. - остались... в "попе". Программы загружали только одно ядро.. и в связи с этим те же 2-ядерные 3ГГц проццесоры были более приемлимыми, чем 4-ядерные Q6600 с частотами 2.4ГГц.
Та же 1С - до сих пор "моноядерная". Выигрыш получается только на серверах, когда подключаются в терминале десятки пользователей и "по ядру на пользователя" - получается быстро... на стауионарном бухгалтерском компе до сих пор нет пользы от многоядерности... косынка - одноядерная, 1С - одноядерная... на что второе ядро, спршивается?
Но! На самом деле я скажу в чем пользя 2-ядерного процессора перед одноядерным... наверняка те же любознательные (то бишь опытные) пользователи сталкивались, что какая-то задача или служба вдруг начинает грузить систему... когда человек знает что такое диспетчер задач, что такое службы, как их отключать - это правилось легко (не всегда... вирусы и сбои бывали необратимыми), но когда загрузку было не отключить - начинался "тупняк" А так как до сих пор большинство служб
одноядерные - то на 2-ядерной системе это попросту не замечалось и можно работать "как ни в чем ни бывало" - ведь второе ядро свободно и можно спокойно работать... Но 3-4-6-8-100-ядерные системы... прироста и удобства не давали ни какого...
Пройдет ещё 5 лет, появятся 16-32-64 ядерные процессоры, а та же косынка -все-равно не будет использоваться "всю мощь"... не потому что ей это не надо, а потому что переписывать движок "впадлу"... я не буду тыкать пальцем в программы и производителей, но таких все-равно будет не мало. И это не их вина! Зачем усложнять код, повышая количество ошибок (надеюсь все в курсе, что в обычных программах разрешается одна ошибка на 1000 строк кода... и даже в очень важных... которые работают на тех же спутниках - ДОПУСКАЕТСЯ одна ошибка на 10 000 строк кода = это не значит, что каждую 1000 строк - ставится ошибка! - не путать красное с солёным!) из-за того что кто-то вместо интенсивного пути выбрал экстенсивный.
Чую я разошёлся. Подведу итог. Все возгласы производителей процессоров "наши продукты опережают время" - всего лишь пиар-лозунг, скрывающий невозможность их самих сделать продукт лучше (быстрее). Нашли какой-то выход для себя удобный - и начали раскручивать весь мир. Самое смешное (или горькое) - что им это удалось!
Поверьте - им совсем не сложно сделать 30-50-100-1000 (80-ядерный процессор из ядер, выполняющих простые CISC инструкции Intel представляла ещё сколько лет назад...) которые будут потреблять как современный 1-2-ядерный... и если эти 100 ядер перемножить - вроде бы быстрее будет... но увы только на узких специализированных задачах... такова специфика.
В настоящее время разрабатываются много вариантов перекладки расчетов с процессора на видеокарты. Правда тут тоже проблема - что NVidia, что ATI (AMD) проталкивают свои собственные разработки и, естественно, это не играет на продвижение стандарта. Вроде есть сподвижки - открытый API - OpenCL, но загадывать не буду - я не Ностардамус - как сложится судьба утвержать не берусь.
Но опять таки - всё "возлагается на плечи программистов"... чем они виноваты за такие наказания?
И вот глядя на весь этот маразм (то бишь гонку за количеством ядер) - хочу спросить - что крутого во всяких рекламах о том что "создан
мильён-ядерный чип" которых нафиг никому не нужен (вспоминаем анекдот про "неуловимого Джо").
Вот такой вот небольшой опус.
У кого есть мысли - высказываемся.