Шрифт:
Интервал:
Закладка:
3 Особенности проектирования и написания многопоточных программ
Активное внедрение многоядерных систем подразумевает существенное изменение стиля программирования: разработчики будут вынуждены использовать параллельные потоки, порождение и обработку асинхронных событий и др. Иными словами, новая аппаратная архитектура требует смены программной парадигмы – перехода от последовательного стиля программирования к параллельному. Сегодня только небольшая часть программного обеспечения может эффективно выполняться на многоядерных процессорах, что подтверждают результаты тестов – синтетических и предназначенных для конкретных классов приложений (см., например, www.3dnews.ru/cpu/dualcore-cpu/index03.htm). Реальный рост производительности дают лишь программы, оптимизированные под многопоточность, такие как Adobe Premiere Pro 1.5, 3DMax и др. Остаются актуальными задачи разработки и внедрения драйверов устройств, поддерживающих многопоточность [6].
При переходе с одноядерных процессоров на многоядерные приходится принимать во внимание проблему последовательного выполнения. Что это означает применительно к многоядерной системе? В ней выполнение считается последовательным, если в какой-то момент одно или более ядер не могут выполнять код одновременно с другими ядрами. Такая ситуация может возникнуть по разным причинам [1]: блокировка при доступе к ресурсам, необходимость синхронизации процессов или потоков на ядрах, поддержка когерентности кэш-памяти, неравномерность загрузки.
Блокировки возникают из-за невозможности (например, в момент «сбора мусора») одновременного доступа приложений на разных ядрах к жесткому диску, к устройствам ввода/вывода или данным приложений. Очень часто параллельные процессы, выполняемые на разных ядрах, нужно синхронизировать в определенные моменты. Например, приложение на одном из ядер должно использовать промежуточные данные, которые получает приложение (поток, процесс) на другом ядре. Первое приложение не может продолжить работу до получения этих данных, то есть находится в состоянии ожидания. В такой ситуации неизбежны накладные расходы на синхронизацию приложений (процессов, потоков), выполняемых на разных ядрах. В свою очередь, это обусловливает снижение эффективности параллельной работы, что находит отражение в сетевом законе Амдала. Возникает необходимость в поддержке когерентности (согласованности) кэш-памяти для всех ядер при использовании разделяемой памяти.
Можно упомянуть об исследованиях Intel, посвященных динамическому регулированию интенсивности выполнения инструкций (energy per instruction, EPI) в зависимости от степени параллелизма реализации программного обеспечения [2]. Специалисты корпорации опытным путем показали эффективность регулирования тактовой частоты асимметричной многопроцессорной системы в зависимости от активности вычислительных ядер.
Конец ознакомительного фрагмента.
- Дипломное проектирование в области PR и рекламы - Инна Марусева - Воспитание детей, педагогика
- Психодиагностика. Практикум по психодиагностике - Людмила Сенкевич - Воспитание детей, педагогика
- Актуальные проблемы совершенствования высшего образования - Коллектив авторов - Воспитание детей, педагогика
- Технологии и инструменты маркетинга в стратегическом региональном планировании - Елена Чмышенко - Воспитание детей, педагогика
- Развитие речи в детском саду. Программа и методические рекомендации. Для работы с детьми 2-7 лет - Валентина Гербова - Воспитание детей, педагогика
- Приобщение детей к художественной литературе. Программа и методические рекомендации. Для занятий с детьми 2-7 лет - Валентина Гербова - Воспитание детей, педагогика
- Воспитание и обучение в старшей группе детского сада. Программа и методические рекомендации - Ольга Соломенникова - Воспитание детей, педагогика
- Воспитание и обучение в средней группе детского сада. Программа и методические рекомендации - Валентина Гербова - Воспитание детей, педагогика
- Финансовое планирование и бюджетирование в организации - Денис Мурзин - Воспитание детей, педагогика
- Мир фантазии. Программа и методические рекомендации по внеурочной деятельности в начальной школе. Пособие для учителя. 3 класс - Светлана Гин - Воспитание детей, педагогика