Разработка масштабируемых программ для многоядерных архитектур - Алла Владова
Шрифт:
Интервал:
Закладка:
Широкое распространение мультиядерных технологий – это следующий этап развития компьютерных технологий, который преобразит существующую вычислительную среду. Основные выгоды, получаемые от внедрения мультиядерных технологий представляются следующими.
Для коммерческого рынка – корпоративные IT-системы получат значительное увеличение производительности, используя оптимизированные мультипоточные приложения. Внедрение новых процессоров позволит создавать более сложные системы, с минимальными вложениями, опираясь на существующую инфраструктуру. Кроме того, такие системы отличаются простым управлением, упрощенным менеджментом, низкой совокупной стоимостью владения, высокой эффективностью и производительностью.
Для бизнеса и конечных пользователей – мультиядерная технология AMD способна существенно увеличить количество выполняемой работы в задачах требующих интенсивных вычислений, например таких, как мультимедиа, создание цифрового контента, обеспечения безопасности и других.
Разработчики и тестеры программного обеспечения озадачены созданием новых алгоритмов, обрабатывающих данные одновременно. [2].
Конечно, говорить о том, что двухядерные процессоры в два раза производительнее одноядерных, не приходится. Причина заключается в том, что для реализации параллельного выполнения двух потоков необходимо, чтобы эти потоки были полностью или частично независимы друг от друга, а кроме того, чтобы операционная система и само приложение поддерживали на программном уровне возможность распараллеливания задач. И в связи с этим стоит подчеркнуть, что сегодня далеко не все приложения удовлетворяют этим требованиям и потому не смогут получить выигрыша от использования двухядерных процессоров. Впрочем, уже сегодня существует немало приложений, которые оптимизированы для выполнения в многопроцессорной среде, и такие приложения, несомненно, позволят использовать преимущества двухядерного процессора. Кроме того, она позволяет выявить преимущества при одновременной работе с несколькими приложениями, что является типичной ситуацией на сегодняшний день.
2.1 Архитектура Intel Core
Рассмотрим технологию Intel Core на примере двухядерного процессора Presler, выполненного по 65-нанометровому технологическому процессу, каждое ядро которого имеет собственный кэш второго уровня L2 объемом 2 Мбайт. Он поддерживает 64-битное расширение памяти Intel EM64T и технологию Executable Disable Bit, с отключенной на аппаратном уровне технологии HyperThreading.
В отличие от двухядерных процессоров Pentium Extreme Edition и Pentium D в процессоре Presler два ядра размещены на разных кристаллах, то есть это будут два физически разделенных кристалла в одной упаковке в соответствии с рисунком 2. Такой подход к организации двухядерной архитектуры предоставляет достаточно гибкие возможности для отбраковки кристаллов, позволяя увеличить долю выхода годных двухядерных процессоров, а к тому же (и скорее всего, в этом главная причина) это позволяет одновременно с двухядерным процессором Presler выпускать и одноядерный аналог, причем кристаллы для обоих процессоров могут «нарезаться» из одних и тех же пластин [3].
Рисунок 2 – Структурная схема процессора Presler
Микроархитектура Intel Core, реализованная в процессорах Intel позволяет улучшить соотношение производительности и энергопотребления. Характеристики новой микроархитектуры Intel® Core™:
Технология Intel® Wide Dynamic Execution позволяет обрабатывать больше команд за такт процессора, повышая эффективность выполнения приложений и сокращая энергопотребление. Каждое ядро процессора, поддерживающего эту технологию, может выполнять до четырех инструкций одновременно, используя эффективный конвейер из 14 стадий.
Технология Intel® Intelligent Power Capability делает энергопотребление более низким, активируя отдельные логические подсистемы только по мере необходимости.
Технология Intel® Advanced Smart Cache включает совместно используемую кэш-память 2-го уровня, которая снижает энергопотребление, сводя к минимуму обмен данными с памятью, и повышает производительность, позволяя одному из ядер процессора использовать всю кэш-память при бездействии другого ядра.
Технология Intel® Smart Memory Access повышает производительность системы, сокращая время отклика памяти и оптимизируя, таким образом, использование пропускной способности подсистемы памяти.
Технология Intel® Advanced Digital Media Boost позволяет обрабатывать все 128-разрядные команды SSE, SSE2 и SSE3, широко используемые в мультимедийных и графических приложениях, за один такт, что удваивает скорость их выполнения [4].
2.2 Многоядерная технология AMD
Имеющаяся процессорная архитектура AMD позволила интегрировать на тот же кристалл второе ядро при переходе на технологический процесс 90 нм. В процессорах архитектуры AMD64 с двумя ядрами дублированию подвергнуто само вычислительное ядро и кэш-память, в то время как контроллер памяти и контроллер HyperTransport остаются в двухядерных процессорах в неизменном виде. В этой связи ключевое значение начинает играть блок System Request Interface (SRI), на который возлагается обязанность арбитража потоков команд и данных между двумя ядрами. Процессорные ядра взаимодействуют с интегрированным контроллером памяти и контроллером шины HyperTransport через Crossbar Switch, который, по сути, является арбитром шин контроллера памяти и HyperTransport в соответствии с рисунком 3.
Рисунок 3 – Архитектура процессора AMD Athlon 64 X2 Dual-Core
Особо стоит отметить тот факт, что хотя каждое ядро имеет собственный кэш L2, для него доступны данные и «соседнего» кэша – второго уровня. При этом процессор поддерживает когерентность хранимой в этой «быстрой памяти» информации. Такой подход исключает повторное обращение к оперативной памяти за данными, уже загруженными в кэш одного из ядер, что позволяет уменьшить время ожидания и снизить нагрузку на шину памяти. Кстати говоря, наличие интегрированного на кристалле контроллера памяти также весьма удачно укладывается в концепцию двухъядерности. Ведь в этом случае ядра общаются прямо с контроллером памяти, не имея посредника в лице контроллера системной шины. В своей же практической реализации новые двухъядерные процессоры компании Athlon 64 X2 Dual-Core изготавливаются на основе ядер Toledo и Manchester, для которых одноядерными аналогами являются соответственно ядра San Diego и Venice. Это, в свою очередь, означает, что процессоры выполнены по 90-нанометровому технологическому процессу с применением технологии SOI (Silicon On Insulator) и обладают поддержкой набора инструкций SSE3, а также усовершенствованным контроллером памяти, поддерживающим работу модулей DDR SDRAM PC1600/2100/2700/3200, в том числе и в двухканальном режиме. Различие ядер Toledo и Manchester, как и San Diego и Venice, состоит в размере кэша второго уровня. Так, в первом случае кэш L2 составляет 2Ѕ1024 Мбайт, а во втором – 2Ѕ512 Мбайт. При этом тактовая частота процессоров этой линейки равна 2400, 2200 и 2000 МГц, т.е. при переходе на двухъядерную архитектуру не пришлось жертвовать скоростью объединяемых в тандем ядер.
Двухядерные процессоры семейства AMD Athlon 64 X2 Dual-Core, как и семейство Intel Pentium D, ориентированы на использование в графических станциях для работы с 3D-графикой и на универсальные рабочие станции для пользования офисными приложениями, приложениями создания контента, обработке цифровых фотографий и т.д.
Таким образом, как утверждают многие эксперты, в течение ближайших двух лет почти все микропроцессоры, устанавливаемые в настольных ПК, рабочих станциях и серверах, будут иметь два ядра или даже больше. И надо сказать, что основания для таких прогнозов весьма весомые. Производительность двухядерного процессора может быть почти в два раза выше, чем у одноядерного, а его стоимость будет ниже, чем у двух процессоров, имеющих по одному ядру. При размещении двух процессоров на одном кристалле скорость обмена информацией между ними возрастает, а совместное использование кэш-памяти может еще более повысить эффективность обработки данных. Кроме того, двухядерные процессоры занимают меньше места, потребляют меньше энергии и рассеивают меньше тепла, нежели отдельные процессоры. Добавим еще, что, по имеющейся информации, процессоры на базе нескольких ядер хорошо подходят для обработки транзакций, а также для обслуживания баз данных и научных применений [5,8].
3 Особенности проектирования и написания многопоточных программ
Активное внедрение многоядерных систем подразумевает существенное изменение стиля программирования: разработчики будут вынуждены использовать параллельные потоки, порождение и обработку асинхронных событий и др. Иными словами, новая аппаратная архитектура требует смены программной парадигмы – перехода от последовательного стиля программирования к параллельному. Сегодня только небольшая часть программного обеспечения может эффективно выполняться на многоядерных процессорах, что подтверждают результаты тестов – синтетических и предназначенных для конкретных классов приложений (см., например, www.3dnews.ru/cpu/dualcore-cpu/index03.htm). Реальный рост производительности дают лишь программы, оптимизированные под многопоточность, такие как Adobe Premiere Pro 1.5, 3DMax и др. Остаются актуальными задачи разработки и внедрения драйверов устройств, поддерживающих многопоточность [6].