Переход к двуядерным процессорам




 

Рисунок 2 – микрофотография одного из первых двуядерных процессоров

компьютер процессор одноядерный двуядерный

Первой двуядерные чипы для настольных ПК представила корпорация Intel — 11 апреля было официально объявлено о начале поставок процессора Pentium 4 Extreme Edition 840. AMD не заставила себя долго ждать и уже 21 апреля ознакомила публику с тремя серверными двуядерными процессорами Opteron, а также представила новую торговую марку — Athlon 64 X2, под которой уже 9 мая были официально презентованы двуядерные процессоры для настольных ПК.

Переход на двуядерную архитектуру обусловлен тем, что традиционные методы по увеличению производительности практически исчерпали себя. Из-за ряда технологических проблем темпы наращивания тактовых частот в последнее время заметно замедлились. К примеру, в последний год перед появлением двуядерных процессоров компания Intel смогла нарастить частоты своих CPU лишь на 400 МГц, а конкуренты от AMD ускорились всего на 200 МГц. Как видим, рост тактовых частот дается нелегко. А другие методы, такие как увеличение скорости шины и размера кэш-памяти, ощутимого прироста производительности не дают.

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

Что же представляет собой двуядерный процессор? На первый взгляд это просто два процессора, объединенных в общем корпусе. Но не все так просто. Во-первых, нужно различать термины «процессор» и «процессорное ядро». Во-вторых, существует проблема общих ресурсов, доступ к которым нужно распределять между двумя ядрами. Если же посмотреть с точки зрения программного обеспечения, то двуядерный процессор система рассматривает как два независимых. Понятно, что двуядерный процессор способен одновременно выполнять два потока инструкций, в то время как обычный CPU производит вычисления строго по очереди. До этого уже была произведена попытка разделить выполняемые инструкции — речь идет о технологии Intel Hyper-Threading. Вот только в ней два «виртуальных» процессора почти во всем разделяют между собой ресурсы одного «физического» процессора (кэши, конвейер, исполнительные устройства). Практически все ресурсы общие — и если они уже заняты одним из выполняющихся потоков, то второй будет вынужден ожидать их освобождения.

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

Полноценный двуядерный процессор — совсем другое дело. В этом случае система определяет действительно два «честных» процессорных ядра. И прирост производительности при этом составляет уже не 10-20% (средний показатель для процессора с технологией Hyper-Threading), а все 80-90% и даже больше (естественно, при использовании обоих ядер). В принципе, двуядерный процессор представляет собой SMP-систему (SMP — Symmetric MultiProcessing, симметричная многопроцессорная обработка; термин, обозначающий систему с несколькими равноправными процессорами). По сути своей он не отличается от обыкновенной двухпроцессорной системы, в которой установлено два независимых процессора. В результате мы получаем все преимущества двухпроцессорных систем без необходимости использования сложных и дорогих двухпроцессорных материнских плат.

Один из способов создать энергоэффективный процессор — это переход от одноядерной процессорной архитектуры к многоядерной. Дело в том, что многоядерные процессоры позволяют повышать производительность именно за счет увеличения IPC, то есть количества инструкций программного кода, обрабатываемых за каждый такт работы процессора. В идеале при переходе от одноядерной архитектуры процессора к двуядерной можно сохранить тот же уровень производительности, снизив тактовую частоту каждого из ядер почти вдвое. В реальности, конечно, все несколько сложнее — результат будет зависеть от используемого приложения и его оптимизации к двуядерному процессору. То есть, чтобы приложение могло одновременно задействовать несколько процессорных ядер, оно должно хорошо распараллеливаться. Если же программный код написан таким образом, что подразумевает только последовательное выполнение инструкций, от многоядерности проку не будет. Для того чтобы продемонстрировать, как именно масштабируется производительность многоядерного процессора в зависимости от оптимизации программного кода к многоядерной архитектуре, рассмотрим следующий пример. Имеется многоядерный процессор с количеством ядер равным n. Предположим, что на этом процессоре выполняется программа, включающая N инструкций программного кода, причем S инструкций этого кода может выполняться только последовательно друг за другом, а P (равное N – S) инструкций являются программно независимыми друг от друга и могут выполняться одновременно на всех ядрах процессора. Обозначим через s (равное S / N) — долю инструкций, выполняемых последовательно, а через p (равное 1 – s) — долю инструкций, выполняемых параллельно.

 

Рисунок 3 - Выполнение программного кода на одноядерном процессоре

 

В случае применения одноядерного процессора (рисунок 4) время, затрачиваемое на выполнение всего программного кода, составит:

 

t1 = N / IPS (3.1)

 

В случае использования n-ядерного процессора (рисунок 1) время, затрачиваемое на выполнение всего программного кода, окажется меньше за счет параллельного выполнения P команд на n ядрах процессора и составит:

 

(3.2)

Поскольку приростом производительности в данном случае можно считать сокращение времени выполнения программы при использовании многоядерного процессора по сравнению со временем выполнения той же программы при применении одноядерного процессора, то есть t1 / tn, получим, что прирост производительности составит:

 

(3.3)

 

Графическая зависимость прироста производительности от числа ядер процессора показана на рисунке 5.

 

Рисунок 4 - Выполнение программного кода на многоядерном процессоре

 

Как видно из приведенной формулы, прирост производительности в случае многоядерной архитектуры процессора в большой степени зависит от оптимизации приложения к многоядерной архитектуре, то есть от его способности распараллеливаться. К примеру, даже в случае, когда 90% программного кода распараллеливается на несколько исполнительных ядер, использование четырехъядерного процессора позволяет получить только трехкратный прирост производительности в сравнении с одноядерной архитектурой процессора.


 

Рисунок 5 - Зависимость прироста производительности от числа ядер процессора

 

Рассмотренный пример представляет собой идеальную ситуацию, но в реальности все несколько сложнее, тем не менее, основная идея остается неизменной: использование многоядерных процессоров требует внесения кардинальных изменений в программное обеспечение. До сих пор, обсуждая прирост производительности, который можно получить при переходе от одноядерной к многоядерной архитектуре, мы рассматривали только одно приложение. Тем не менее, многоядерные процессоры позволяют ощутить существенный прирост производительности при одновременной работе нескольких приложений. В идеальном случае каждое приложение может исполняться на отдельном ядре процессора независимо от других приложений. К примеру, можно параллельно конвертировать видеофайлы, играть в игры и т.п. Многоядерная архитектура процессоров позволяет одновременно решать две глобальные задачи: увеличивать производительность процессоров и одновременно создавать энергоэффективные процессоры. Конечно, многоядерная архитектура — это лишь один из рецептов создания высокопроизводительных энергоэффективных процессоров. Для создания действительно энергоэффективного многоядерного процессора необходимо, чтобы каждое его ядро было оптимизировано для многоядерной архитектуры и к тому же было энергоэффективным. К примеру, двухъядерные процессоры Intel, основанные на архитектуре NetBurst (семейство Intel Pentium D), позволяют лишь частично решить проблему повышения энергоэффективности. Дело в том, что микроархитектура каждого ядра процессора семейства Intel Pentium D оптимизирована под масштабирование тактовой частоты и не является энергоэффективной. Другим подходом к повышению производительности в рамках заданного энергопотребления является переход на принципиально иную микроархитектуру ядра. Отметим, что данный подход не противоречит идее многоядерности, а скорее дополняет ее.

 

Виртуализация

 

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

Программная виртуализация:

Динамическая трансляция - При динамической трансляции (бинарной трансляции) проблемные команды гостевой OC перехватываются гипервизором. После того как эти команды заменяются на безопасные, происходит возврат управления гостевой ОС. Паравиртуализация — техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой Гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Метод паравиртуализации позволяет добиться более высокой производительности, чем метод динамической трансляции. Метод паравиртуализации применим лишь в том случае, если гостевые ОС имеют открытые исходные коды, которые можно модифицировать согласно лицензии.

Аппаратная виртуализация:

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

б) Возможность увеличения быстродействия платформ виртуализации. Управление виртуальными гостевыми системами осуществляет напрямую небольшой промежуточный слой программного обеспечения, гипервизор, что дает увеличение быстродействия.

в) Улучшается защищённость, появляется возможность переключения между несколькими запущенными независимыми платформами виртуализации на аппаратном уровне. Каждая из виртуальных машин может работать независимо, в своем пространстве аппаратных ресурсов, полностью изолированно друг от друга. Это позволяет устранить потери быстродействия на поддержание хостовой платформы и увеличить защищенность.

г) Гостевая система становится не привязана к архитектуре хостовой платформы и к реализации платформы виртуализации. Технология аппаратной виртуализации делает возможным запуск 64-битных гостевых систем на 32-битных хостовых системах (с 32-битными средами виртуализации на хостах).

Реализации:

IBM System 370, VM/370 — 60-е года. На виртуальных системах IBM VM были отработаны идеи и технологии, во многом определившие архитектуры современных решений по виртуализации; VMware; Xen; KVM.

Технологии:

V86 mode — старая; Intel VT (VT-x) — Intel Virtualization Technology for x86; AMD Pacific.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-28 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: