Дата:   19.11.2017 г.
Время:
 
 
Профессионалам и любителям
ПРОСТО * ДОСТУПНО * ИНТЕРЕСНО
01796
Подписной
индекс
Опрос
Каким антивирусом пользуетесь?
Погода
 
Архив - Почему тормозит компьютер? - Журнал «Компьютер»
Почему тормозит компьютер?
№ 1-2'2013     Sky     Тема: Железо     ( Прочитано 5236 раз )
 
Здравствуйте, дорогая редакция!
Недавно купила новый компьютер, но через некоторое время он начал жутко тормозить. Подскажите, в чем может быть проблема?
Мария
 
Здравствуйте, Мария!
Еще год назад вы купили новенький ПК с самым современным, многоядерным процессором и не могли нарадоваться приобретению. Но уже сегодня вдруг стали замечать: компьютер грузится дольше, а новые программы (особенно игры) работают медленно. В чем проблема? Почему ваш трехъядерный (или четырехъядерный) процессор не справляется с нагрузкой?
 
 
Многоядерность – не панацея
 
По мнению экспертов, концепция многоядерности и новые технологии производства CPU (high-k на основе гафния и металлического затвора) продлили жизнь закону Мура эдак еще лет на 40-50. Однако не все согласны с данным прогнозом.
В своей работе «Закон Амдала в многоядерную эру» (Amdahl’s Law in the Multicore Era) исследователи Марк Хилл и Майкл Март ссылаются на сформулированное Джином Амдалом в 1967 году правило, которое гласит, что при распараллеливании вычислений производительность растет, но не линейно.
 
Рис. 1
 
Рис. 2
 
В оригинале закон звучит так: «В случае, когда задача разделяется на несколько частей, суммарное время ее выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента».
В итоге, чем больше ядер (рис. 1 и 2) будет содержать процессор, тем больше времени будет уходить на распараллеливание процессов. Как показывает практика, с двумя ядрами проблем не возникает и большинство программ в среде Windows работают корректно. Однако с четырехъядерными CPU уже возникают несуразности. Например, работают только два ядра, а остальные простаивают.
 
В конвейерных вычислениях есть еще один изъян: все ядра используют одни и те же ресурсы, т.е. обращаются к одним и тем же сегментам памяти (про отставание быстродействия памяти скромно умолчим). В случае с однопроцессорной архитектурой потоки встают в очередь, с многоядерными – уже появляются проблемы. Когда несколько потоков одновременно пытаются получить доступ к одному и тому же сегменту памяти, система вполне может впасть в некоторую «задумчивость».
 
Разделяй и властвуй
 
Однако существует другой путь: не гнаться за числом ядер, а грамотно разделять массивы входной информации. А именно разбивать их на потоки. Эта гениальная идея пришла в голову группе исследователей из Стэндфордского университета во главе с Кунле Олокотуном. И они принялись работать над процессором Hydra, весьма образно названным по имени чудовища, с которым сражался Геракл. Впоследствии, проявив изрядную прозорливость, компания Sun Mirosystems купила эту технологию и стала производить собственные процессоры SPARC.
Наиболее известным стал 65-нм многопотоковый и многоядерный микропроцессор UltraSPARC T2 (Niagara 2). Процессор содержал в себе 8 ядер, каждое из которых могло одновременно обрабатывать 8 потоков. В итоге процессор UltraSPARC T2 способен был обрабатывать 64 конкурирующих потока. Сами потоки можно разделять по типам данных, что тоже повышало быстродействие системы.
Причем, каждый обрабатываемый поток мог представлять собой изолированный домен. И в каждом домене могла быть запущена отдельная ОС. Представьте себе: не мешая друг другу, 64 «операционки» спокойно работают на вашем ПК!
 
Рис. 3
 
 
 
 
 
В 2011 году на свет появился восьмиядерный процессор SPARC T4 (рис. 3) с рабочей частотой 2,5 ГГц, выполненный по 40-нм технологии. Но, увы, технология многопоточных вычислений до сих пор остается привилегией серверных систем.
 
Проблема №2
 
Итак, вернемся к «бытовым» ПК с многоядерными процессорами на архитектуре x86. Как известно, в них есть некое подобие многопоточности: конвейеры данных (впервые появились в Pentium) и распараллеливание процессов. Часть этих функций берет на себя и операционная система. По утверждению Microsoft в Windows 7 реализована поддержка многоядерных процессоров с количеством ядер до 256.
Но тогда почему до сих пор тормозят новые программы? Успевают (и хотят ли) программисты писать приложения, грамотно использующие ресурсы ПК? В частности, возможности многоядерных процессоров. Насколько современный программный инструментарий отвечает ежеквартальным обновлениям процессорных линеек?
 
Судя по всему, ответ отрицательный. Зачастую, программы создаются без оптимизации кода, с помощью набора готовых модулей и стандартных библиотек. Без учета вычислительных возможностей и передовых технологий, заложенных в том или ином процессоре.
Особенно этим «болеют» игровые приложения. Разработчики давно махнули рукой на пользователей. «Мощности железа растут с каждым днем. Так что никакой «шлифовки» и «подгонки» кода от нас не ожидайте. Хотите играть – покупайте новый компьютер» - в открытую заявляют создатели игр.
 
Иной подход
 
Мэтью Диллон, автор операционной системы DragonFly BSD (рис. 4), убежден, что многоядерные системы требуют коренных изменений в ядре для того, чтобы ОС могла эффективно использовать все ресурсы компьютера.
DragonFly («стрекоза», анг.) - это заново переписанная «операционка» BSD. В «Стрекозе» полно новых идей и разработок. Ключевое решение – переписанное ядро с учетом того, что процессы, работающие на одном процессоре, не требуют каких-либо взаимных блокировок.
 
Рис. 4
 
Для этой цели была реализована идея легковесных нитей ядра (LWKT), по одной на каждый процесс в системе, и отдельный планировщик на каждый процессор. Для доступа к данным друг друга нити используют механизм сообщений, который позволяет избежать блокировок, обеспечивает правильную последовательность выполнения операций доступа. Такое разделение не вызывает коллизий при обмене данными между нитями, работающими на одном процессоре.
Второй идеей, реализованной Мэтью Диллоном, стала кластерная файловая система HAMMER и ее более продвинутая модификация HAMMER2, запланированная на 2013 год.
 
Интересно, что в результате разделения ядра на отдельные потоки, доступ к которым осуществляется с помощью сообщений, DragonFly приобрела некоторые черты микроядерных ОС. Не напоминает ли вам этот вариант технологии многопоточных вычислений?
На сообщениях, легковесных нитях ядра и кластерной файловой системе нововведения и особенности DragonFly не заканчиваются. Здесь есть множество других весьма любопытных и полезных идей, о которых разработчики других систем даже не задумываются.
 
Наиболее интересные из них – это виртуальное ядро, способное работать как пользовательский процесс, драйвер для вынесения метаданных файловой системы на другой накопитель swapcache и механизм заморозки процессов, позволяющий сохранить текущее состояние приложения в файл.
 
Может быть такие ОС, как DragonFly, решат проблемы нашего компьютера? В итоге, мы не будем сидеть у экрана монитора в томительном ожидании загрузки операционной системы. Либо перестанем наблюдать за слайд-шоу в новой игрушке…
 

 
 
На главную страницу На предыдущую страницу На начало страницы
 
 
 
 
 
2009 - 2017 © СПД Зайцев А.Б.
Сайт является средством массовой информации.
При перепечатке и цитировании в печатных СМИ ссылка на журнал "Компьютер" обязательна.
При перепечатке и цитировании в Интернете обязательна активная гиперссылка на сайт Comput.com.ua, не закрытая для индексирования.
Украина онлайн Рейтинг@Mail.ru Рейтинг Сайтов YandeG