Имитационная модель многоядерного процессора. Современные вычислительные системы по способу построения аппаратной части делятся на сосредоточенные и распределенные. Первые, в свою очередь, могут быть одномашинными или комплексами многомашинными и многопроцессорными
Скачать 332.77 Kb.
|
1 2 2 ОБЪЕКТ ИССЛЕДОВАНИЯ И ЕГО МОДЕЛЬ 2.1 Структура многоядерных процессоров и режимы их работы В настоящее время требования производительности центрального процессора непрерывно возрастают. В течении продолжительного времени, когда процессоры были одноядерными, для увеличения вычислительной мощности в новых процессорах повышали тактовую частоту и количество транзисторов, размещаемых на кристалле. Но у данного метода есть физические ограничения, из-за которых сложность дальнейшего совершенствования возрастает экспоненциально, поскольку при дальнейшем уменьшении компонентов, их размер приближается к размерам атома: сегодня процессоры выпускаются по 14-нм технологии, а размеры атома кремния - приблизительно 0,543 нм. Поскольку использование многопроцессорных систем требует использования крайне дорогостоящих и сложных для изготовления материнских плат, такие системы также не получили широкого распространения. Вследствие этого было принято решение добиваться дальнейшего повышения производительности микропроцессоров за счёт иных средств и способов. Одним из самых эффективных направлений была признана концепция многоядерных микропроцессоров, возникшая в мире суперкомпьютеров. Многоядерный процессор - это центральный микропроцессор, который содержит более одного вычислительного ядра на единственном процессорном кристалле и/или в одном корпусе. Хоть такое решение является достаточно простым и очевидным, в процессе создания многоядерных процессоров возникают несколько проблем: обязательная независимость ядер процессора друг от друга; на рынке программного обеспечения должно присутствовать достаточное количество программ, обладающих способностью с достаточной быстротой и эффективностью распределять свои процессы на число ветвей, соответствующее количеству ядер в процессоре. Преодолев проблему создания многоядерных процессоров, можно получить следующие преимущества: возможность распределять работу программ по нескольким ядрам процессора; достичь общего возрастания скорости работы программ; более эффективное использование требовательных к вычислительным ресурсам мультимедийных приложений; снизить энергозатраты на работу центрального процессора и компьютера в целом; более комфортная работа пользователя ПК за счет увеличения скорости. Не смотря на перечисленный преимущества, концепция многоядерных процессоров обладает и некоторыми существенными недостатками: из-за возрастания затрат на производство многоядерных процессоров производителям приходится увеличивать их стоимость, что приводит к уменьшению спроса на современные процессоры; поскольку все ядра одновременно работают с оперативной памятью, то могут возникать конфликты; из-за увеличения числа ядер, возрастает энергопотребление, что приводит к необходимости использования более мощных схем питания; возрастает степень перегрева, что приводит к использованию более мощных систем охлаждения; очень малое количество программного обеспечения оптимизировано для использования нескольких ядер; в операционных системах, которые поддерживают работу с многоядерными процессорами, часть вычислительных ресурсов дополнительных ядер выделяется на обслуживание служебных процессов. Судя по перечисленному, можно понять что многоядерные процессоры в настоящее время используются достаточно неэффективно. Главным недостатком оказывается то, что на практике n-ядерные процессоры не увеличивают скорость вычислений в n раз по отношению к одноядерным. Хоть увеличение производительности и является достаточно заметным, но при этом он очень сильно зависит от оптимизации приложения. Если программа не оптимизирована для работы с несколькими ядрами, то её производительность возрастает лишь на несколько процентов. В это же время у рассчитанных на использование нескольких ядер программ быстродействие может возрастать на 50%. Лидеры процессоростроения, такие компании как Intel и AMD, считают, что будущее именно за параллельными вычислениями и продолжают последовательно наращивать количество ядер в процессорах. Появление таких процессоров стимулирует появление специальных операционных систем и прикладного программного обеспечения, поддерживающего многоядерность и многопоточность. На текущий момент переход к использованию многоядерных центральных процессоров происходит очень быстрыми темпами — практически все современные процессоры, поставляемые ведущими разработчиками полупроводниковых изделий, создающими микросхемы, имеют как минимум 2 ядра. Принцип работы. Большинство современных многоядерных центральных процессоров работает по похожей схеме. В случае, когда запущенное приложение поддерживает работу с несколькими потоками, оно может отправлять на процессор одновременно несколько заданий. К примеру, когда в процессоре присутствует 8 ядер, программой на него могут посылаться 8 команд одновременно, которые будут распределяться по этим ядрам. Если же на компьютере запущено сразу несколько программ, то каждой из программ может выделяться часть ядер процессора, что приводит к росту производительности. Большинство операционных систем поддерживают многопоточность, поэтому использование многоядерных процессоров позволяет ускорить работу и компьютера в целом даже для приложений, которые не поддерживают работу с несколькими ядрами. В случае с работой лишь одной программы, то многоядерные процессоры могут быть эффективны только в той ситуации, когда это приложение оптимизировано для работы с многопоточностью. Структура многоядерных процессоров. В общем виде многоядерный процессор, как показано на рисунке 2.1 состоит из: Нескольких процессорных ядер Кэш памяти первого уровня Кэш памяти второго уровня Подсистемы прерываний Контроллера памяти Внутрипроцессорной шины Рисунок 2.1 – Типовая структура многоядерного процессора Более полно рассмотреть структуру многоядерного процессора можно на примере двухъядерного AMD64 Opteron (Рисунок 2.2). AMD не только является первой среди всех компаний, занимающихся разработкой процессоров, которой удалось устранить узкие места в работе внешней шины, характерные для архитектуры x86; это также первый разработчик, успешно объединивший два ядра на одном кристалле вместе с контроллером памяти, подсистемой ввода-вывода и другими процессорами, что позволило улучшить общесистемную производительность и повысить эффективность обработки. Рисунок 2.2 – Структура процессора AMD64 В современных многоядерных процессорах наиболее распространённой является суперскалярная архитектура, когда каждое ядро является конвейером, на которые посылаются команды, разделённые на микроперации. Режимы многоядерной обработки и роль ОСРВ. Существует три основных типа многопроцессорной обработки: асимметричная многопроцессорность — на каждом ядре работает отдельная операционная система или её отдельные копии одной; симметричная многопроцессорность — все ядра одновременно управляются единственной копией операционной системы, а приложения могут перемещаться между ядрами; исключительная многопроцессорность — все ядра одновременно управляются единственной копией операционной системы, но каждое приложение привязано к конкретному ядру. Ассиметричная многопроцессорность (АМР) обеспечивает среду исполнения, схожую со средами однопроцессорных систем, которые хорошо известны и ясны большинству разработчиков. По этой причине перенос существующего код в подобные системы достаточно прост. Асимметричная многопроцессорность также обеспечивает прямой механизм управления использованием процессорных ядер. Кроме этого, подобные системы дают разработчикам возможность использовать стандартные, привычные им инструменты и методы разработки. Асимметричная многопроцессорность может быть: однородной - на всех ядрах работают операционные системы одного типа и версии; неоднородной - операционные системы отличаются по типу или версии. В симметричной многопроцессорности (SMP) проблема выделения ресурсов решается использованием единственной копии операционной системы на всех ядрах кристалла. Поскольку операционная система непрерывно следит за всеми элементами системы, она может распределять ресурсы между несколькими ядрами без участия или с минимальным участием разработчика программного обеспечения. В системе с симметричной многопроцессорностью работает только одна копия операционной системы, поэтому вычислительные ресурсы можно динамически распределять не между приложениями, а между процессорными ядрами, что позволяет эффективнее использовать оборудование. Исключительная многопроцессорность (BMP) является новым методом обработки, предложенным компанией QNX Software Systems. Как и симметричная многопроцессорность, она имеет преимущество прозрачного управления ресурсами, позволяя при этом разработчикам привязывать программные задачи к конкретным ядрам. В данном режиме единственная копия операционной системы наблюдает за всеми системными ресурсами, обеспечивая их динамическое распределение и совместное использование приложениями. Во время инициализации приложения параметр, который задаётся системным разработчиком, вынуждает все потоки управления приложения выполняться только на заданном ядре. Этот подход имеет несколько преимуществ перед полностью симметричной многопроцессорностью, которая не ограничивает выполнение потоков. Он исключает переполнение кэш-памяти, из-за которого понижается производительность SMP-системы, разрешая приложениям с общими данными выполняться строго на одном ядре. Кроме того, исключительная многопроцессорность обеспечивает корректную работу существующих приложений, которые написаны для однопроцессорных сред, путём их исполнения на одном ядре. В BMP-системе приложение, которое привязано к одному ядру, не может использовать другие ядра, даже если они простаивают. Тем не менее, разработчик операционной системы может создать инструменты для анализа использования ресурсов (в том числе загрузки процессора) отдельными приложениями и механизм распределения приложений между ядрами, который обеспечивает максимальную производительность системы. Если операционная система также позволяет динамически изменять процессорные ядра, которые назначены приложениям, то пользователь может перемещать приложения между ядрами, не заботясь о сохранении их состояния, остановке и перезапуске. BMP-система может работать в полудуплексном режиме. Принимающий процесс с несколькими потоками работает на ядре 0, а передающий, также с несколькими потоками, выполняется на ядре 1. Как и при симметричной многопроцессорности, операционная система имеет полные сведения о работе ядер, что позволяет разработчикам использовать информацию о функционировании и производительности системы в целом. Этот подход избавляет разработчиков от сложной процедуры сбора информации с отдельных ядер. Таким образом, в настоящее время концепция многоядерности широко используется для увеличения производительности центральных процессоров. За счет распараллеливания команд на несколько ядер может заметно повыситься производительность. Но если программа не оптимизирована для работы с несколькими потоками, эффективность её выполнения увеличивается лишь на 3-6%. Если же приложение рассчитано на работу с несколькими ядрами, то оно может выполняться на 50% быстрее. 1 2 |