WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 | 4 | 5 |
МНОГОЯДЕРНОСТЬ, КАК СПОСОБ УВЕЛИЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ Э.П. Ланина Иркутский государственный технический университет 664074, г. Иркутск, ул. Лермонтова, д. 83 Аннотация. Существует два подхода к увеличению производительности процессора. Первый - увеличение тактовой частоты процессора, второй – увеличение количества инструкций программного кода, выполняемых за один такт процессора.

Увеличение тактовой частоты не может быть бесконечным и определяется технологией изготовления процессора. При этом рост производительности не является прямо пропорциональным росту тактовой частоты, то есть наблюдается тенденция насыщаемости, когда дальнейшее увеличение тактовой частоты становится нерентабельным. Разработка более совершенных архитектур процессоров, содержащих большее число функциональных исполнительных устройств, с целью повышения количества команд, одновременно исполняемых за один такт, — традиционный альтернативный росту тактовой частоты путь повышения производительности. Но такие разработки очень сложны и дороги. Сложность разработки возрастает с ростом сложности логики экспоненциально.

Можно сказать, что идея построения многоядерных микропроцессоров является развитием идеи кластеров, но в данном случае дублируется целиком процессорное ядро. Другим предшественником многоядерного подхода можно считать технологию Intel - HyperThreading, где также есть небольшое дублирование аппаратуры и использование двух потоков инструкций, использующих общее ядро.

Многоядерный процессор имеет два или больше "исполнительных ядер".

Операционная система рассматривает каждое из исполнительных ядер, как дискретный процессор со всеми необходимыми вычислительными ресурсами. Поэтому многоядерная архитектура процессора, при поддержке соответствующего 1 программного обеспечения, осуществляет полностью параллельное выполнение нескольких программных потоков.

К 2006 году все ведущие разработчики микропроцессоров создали двуядерные процессоры. Переход к многоядерным процессорам становится основным направлением повышения производительности вычислительных систем. В связи с этим, знание основ функционирования вычислительных систем на многоядерных процессорах является актуальным.

Annotation. There are two ways for increasing processor performance. The first one is to increase CPU Frequency, the second is to increase the amount of Instruction Per Clock The increment of CPU frequency can not be infinite and it depends of processor production technology. At the same time the throughput growth is not straight proportional to increment of CPU frequency that is tendency of saturating is observed when further CPU increment became uneconomic. Traditionally the alternative way for CPU increment is the development of more efficient processor architectures that contain more functional executive units to increase the quantity of instructions that are executed simultaneously in one circle. But such developments are very difficult and expensive. The development complexity grows exponentially during logic complexity increase.

Could say the multicore processor idea is the development of cluster idea but in this case the whole core is duplicated. The Intel HyperThreading technology might be considered as another predecessor of multicore approach. There is also little equipment duplication in HyperThreading technology and it exploits two threads of instructions that utilize one core.

The multicore processor has two or more executive cores. Operating system distinguishes every executive core as a discrete processor that has all necessary computing resource. Therefore the multicore processor architecture implements fully parallel execution of several program streams. All principal processor developers created double core processors at 2006. Migration to multicore processors technology becomes the main trend for increment of systems performance. In this connection the basic knowledge of computer systems with multicore processors operation nowadays is actual.

1. Введение Закона Мура гласит, что количество транзисторов, размещенных на полупроводниковой микросхеме, удваивается каждые два года, что приводит, с одной стороны, к повышению производительности, а с другой стороны, к снижению стоимости производства микросхем. Несмотря на важность и действенность этого закона в течение долгих лет, оценивая перспективы дальнейшего развития, время от времени предсказывали его неминуемое фиаско.

В качестве препятствий на пути дальнейшего развития называются такие факторы, как ограничения из-за физических размеров, стремительный рост энергопотребления и непомерно высокие затраты на производство.

На протяжении многих лет для повышения производительности процессора использовался единственный путь - повышение его тактовой частотой. За эти годы укоренилось мнение, что именно тактовая частота процессора является основным показателем его производительности. Наращивание тактовых частот на современном этапе не простая задача. Конец гонке тактовых частот микропроцессоров был положен благодаря нерешенной проблеме токов утечки и неприемлемому росту тепловыделения микросхем.

Производительность процессора (Performance) — это отношение общего числа выполненных инструкций программного кода ко времени их выполнения или количество инструкций, выполняемых за секунду (Instructions rate):

количество инструкций производительность = ---------------------------------- время выполнения Так как основной характеристикой процессора стала его тактовая частота, то введем частоту в формулу производительность процессора. Помножим числитель и знаменатель на количество тактов, за которое выполнены инструкции:



количество инструкций количество тактов производительность = -------------------------------- ---------------------------- количество тактов время выполнения Первая часть полученного произведения - количество инструкций, выполняемых за один такт (Instruction Per Clock, IPC), Вторая часть произведения - количество тактов процессора в единицу времени (тактовая частота процессора, F или Frequency). Таким образом, производительность процессора зависит не только от его тактовой частоты, но и от количества инструкций, выполняемых за такт (IPC):

производительность = (IPC) (F) Полученная формула определяет два разных подхода к увеличению производительности процессора. Первый - увеличение тактовой частоты процессора, а второй – увеличение количества инструкций программного кода, выполняемых за один такт процессора. Увеличение тактовой частоты не может быть бесконечным и определяется технологией изготовления процессора. При этом рост производительности не является прямо пропорциональным росту тактовой частоты, то есть наблюдается тенденция насыщаемости, когда дальнейшее увеличение тактовой частоты становится нерентабельным. Количество инструкций, выполняемых за время одного такта, зависит от микроархитектуры процессора: от количества исполнительных блоков, от длины конвейера и эффективности его заполнения, от блока предвыборки, от оптимизации программного кода к данной микроархитектуре процессора. Поэтому сравнение производительности процессоров на основании их тактовой частоты возможно только в пределах одной и той же архитектуры (при одинаковом значении количества выполняемых операций в секунду - IPC процессоров).

Сравнение производительности процессоров с различной архитектурой на основе тактовой частоты неправомерно. К примеру, основываясь на тактовой частоте, некорректно сравнивать производительности процессоров с разным размером кэш памяти уровня L2, или производительности процессоров, поддерживающих и не поддерживающих технологию Hyper-Threading.

Отход от последовательного исполнения команд и использование нескольких исполняющих блоков в одном процессоре позволяют одновременно обрабатывать несколько процессорных микрокоманд, то есть организовывать параллелизм на уровне инструкций (Instruction Level Parallelism - ILP), что, разумеется, увеличивает общую производительность.

Еще один подход к решению данной проблемы был реализован в VLIW/EPIC - архитектуре IA-64 (очень длинных команд), где часть проблем переложена с аппаратуры на компилятор. И все же разработчики признают, что для достижения высокой производительности архитектура важнее.

При большом числе функциональных блоков микросхемы и большом ее размере возникает проблема, связанная со скоростью распространения сигналов - за один такт сигналы не успевают достигнуть необходимые блоки. В качестве возможного выхода в микропроцессорах Alpha были введены так называемые "кластеры", где устройства частично дублировались, но зато внутри кластеров расстояния были меньше. Можно сказать, что идея построения многоядерных микропроцессоров является развитием идеи кластеров, но в данном случае дублируется целиком процессорное ядро.

Другим предшественником многоядерного подхода можно считать технологию Intel - HyperThreading, где также есть небольшое дублирование аппаратуры и использование двух потоков инструкций, использующих общее ядро.

Многоядерный процессор имеет два или больше "исполнительных ядер". Ядром процессора можно назвать его систему исполнительных устройств (набор арифметикологических устройств), предназначенных для обработки данных. Операционная система рассматривает каждое из исполнительных ядер, как дискретный процессор со всеми необходимыми вычислительными ресурсами. Поэтому многоядерная архитектура процессора, при поддержке соответствующего программного обеспечения, осуществляет полностью параллельное выполнение нескольких программных потоков.

К 2006 году все ведущие разработчики микропроцессоров создали двуядерные процессоры. Первыми появились двуядерные RISC-процессоры Sun Microsystems (UltraSPARC IV), IBM (Power4, Power5) и HP (PA-8800 и PA-8900).

О выпуске двуядерных процессоров с архитектурой х86 фирмы AMD и Intel объявили почти одновременно.

Архитектура процессоров достигла достаточно высокой сложности, поэтому переход к многоядерным процессорам становится основным направлением повышения производительности вычислительных систем.

2. Многоядерные процессоры и новые технологии многоядерной обработки данных 2.1. Технологии многопоточности Основные направления развития архитектуры современных микропроцессоров определяются стремлением к увеличению их производительности. Последнюю можно повышать, например, наращивая тактовую частоту и (или) увеличивая число команд, выполняемых за один такт. Одно из решений данной проблемы связано с реализацией концепции "параллелизма на уровне тредов (потоков)" - TLP (Thread Level Parallelism).

Если программные коды не в состоянии загрузить работой все или даже большинство функциональных устройств, то можно разрешить процессору выполнять более чем одну задачу (тред, или поток), чтобы дополнительные потоки загрузили простаивающие устройства. Здесь нетрудно усмотреть аналогию с многозадачной операционной системой: чтобы процессор не простаивал, когда задача оказывается в состоянии ожидания (например, завершения ввода-вывода), операционная система переключает процессор на выполнение другой задачи. Более того, некоторые механизмы диспетчеризации в операционной системе (например, квантование) имеют аналоги в многопотоковой архитектуре (MTA - MultiThreading Architecture). Очевидно, архитектура, поддерживающая параллелизм на уровне потоков (TLP), должна гарантировать, что треды не будут использовать одновременно одни и те же ресурсы, для чего требуются дополнительные аппаратные средства (например, дублирование регистровых файлов). Однако оказалось, что можно реализовать МТА на базе современных суперскалярных процессоров, и это требует лишь относительно небольших аппаратных доработок, что резко повышает привлекательность МТА в глазах проектировщиков.





При использовании базового типа параллелизма на уровне потоков (TLP) в микропроцессоре необходимо иметь не менее двух аппаратных расширений для потоков. Это регистры общего назначения, счетчик команд, слово состояния процесса и т. п. В любой момент времени работает только один поток (тред). Он выполняется до возникновения определенной ситуации (например, выполнения команды загрузки регистра при отсутствии данных в кэш-памяти). В этом случае процессор переключается на выполнение другого потока. Поскольку при непопадании в кэшпамять операции с памятью могут потребовать до сотни тактов процессора, его простои по причине ожидания данных могли бы быть весьма значительными. Современные процессоры, имеющие возможности спекулятивного внеочередного выполнения команд, в подобной ситуации могут продолжить выполнение других команд, но на практике число независимых команд быстро исчерпывается и процессор останавливается.

Архитектура с одновременным выполнением тредов - SMT (Simultaneous MultiThreading) допускает одновременное выполнение нескольких потоков. В этом случае на каждом новом такте на выполнение в какое-либо исполнительное устройство может направляться команда любого потока. По сравнению с суперскалярными процессорами, поддерживающими внеочередное спекулятивное выполнение команд и использующими механизм переименования регистров, для SMT необходимы, в частности, следующие аппаратные средства:

несколько счетчиков команд (по одному на поток) с возможностью выбора любого из них на каждом такте;

средства, ассоциирующие команды с потоком, которому они принадлежат (необходимы, в частности, для работы механизмов предсказания переходов и переименования регистров);

несколько стеков адресов возврата (по одному на поток) для предсказания адресов возврата из подпрограмм;

специальная дополнительная память в процессоре (в расчете на каждый поток) для процедуры удаления из буфера выполненных вне очереди команд.

Одна из основных особенностей SMT у многих современных процессоров - переименование регистров, когда логические (архитектурные) регистры отображаются в физические, с которыми и ведется реальная работа. Техника переименования регистров может, очевидно, применяться для того, чтобы избежать прямого дублирования файлов регистров, как аппаратной принадлежности потока.

2.2. Технология Hyper-Threading Анонсированная в 2002 году компанией Intel технология Hyper-Threading – пример многопоточной обработки команд. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах.

Фактически технология Hyper-Threading позволяет организовать два логических процессора в одном физическом. Таким образом, с точки зрения операционной системы и запущенного приложения в системе существует два процессора, что дат возможность распределять загрузку задач между ними.

Посредством реализованного в технологии Hyper-Threading принципа параллельности можно обрабатывать инструкции в параллельном (а не в последовательном) режиме, то есть для обработки все инструкции разделяются на два параллельных потока. Это позволяет одновременно обрабатывать два различных приложения или два различных потока одного приложения и тем самым увеличить IPC процессора (количество инструкций, выполняемых процессором в секунду), что сказывается на росте его производительности.

В конструктивном плане процессор с поддержкой технологии Hyper-Threading состоит из двух логических процессоров, каждый из которых имеет свои регистры и контроллер прерываний (Architecture State, AS). А значит, две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. После активизации каждый из логических процессоров может самостоятельно и независимо от другого процессора выполнять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину.

Использование двух логических процессоров позволяет усилить процесс параллелизма на уровне потока, реализованный в современных операционных системах и высокоэффективных приложениях. Команды от исполняемых параллельно потоков одновременно посылаются для обработки ядру процессора. Используя технологию outof-order (исполнение командных инструкций не в порядке их поступления), ядро процессора способно параллельно обрабатывать оба потока за счт использования нескольких исполнительных модулей.

Pages:     || 2 | 3 | 4 | 5 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.