Понятие многозадачности

Автор работы: Пользователь скрыл имя, 24 Октября 2010 в 09:44, Не определен

Описание работы

Реферат

Файлы: 1 файл

Введение.docx

— 33.69 Кб (Скачать файл)

AMD. 
 

Архитектура AMD K8 не просто отличается от "интеловской": она концептуально иная, поскольку  в ней нет какого-то выделенного  центра. Каждый из процессоров архитектуры AMD64 является независимой и "самодостаточной" единицей. С чисто технической стороны AMD попросту интегрировала практически всю функциональность северного моста в центральный процессор.

Но "небольшая" технологическая уловка приводит к  совсем иной архитектуре компьютера - SUMA, в отличие от традиционной SMP. SUMA - это название AMD, обозначающее, что архитектура вроде относится к NUMA, но не столь "тормознутая". 

Основа SUMA - последовательная шина HyperTransport (об этой шине во второй части). В каждый процессор интегрируется контроллер "локальной" оперативной памяти (собственно, по сравнению с одноядерными процессорами AMD64 контроллер памяти почти не изменился).Обращения к памяти "чужих" процессоров происходят по шине HyperTransport, причем делается эта "переадресация" запросов абсолютно прозрачно для собственно вычислительного ядра процессора - ее осуществляет встроенный в Northbridge коммутатор (CrossBar), работающий на полной частоте процессора. Этот же самый CrossBar обеспечивает "автоматическую" маршрутизацию проходящих через процессор сообщений от периферийных устройств и других процессоров, включая обслуживание "чужих" запросов к оперативной памяти HT специально оптимизировалась для подобного режима работы. Шина позволяет одновременно передавать данные на скорости в "обе стороны" до 8 Гбайт/с суммарно. Модель памяти получается неоднородной (NUMA), но различия в скорости "своих" и "чужих" участков оперативной памяти получаются относительно небольшими.

Чипсет сильно упрощается: всё, что от него требуется - это просто обеспечивать "мосты" (туннели) между HT и другими типами шин. Ну и, возможно, заодно обеспечивать какое-то количество интегрированных контроллеров.

Здесь всё совместимо со всем: любые современные чипсеты для микроархитектуры AMD64, теоретически, должны работать и с любыми процессорами AMD… и любыми "правильно" сделанными "напарниками". И, в частности, все двухъядерные процессоры AMD должны работать со всеми ранее выпущенными чипсетами для процессоров архитектуры K8.

AMD сейчас любит  подчеркивать, что её процессоры "специально проектировались  в расчёте на двухядерность", но, строго говоря, правильнее было бы говорить, что двухядерность очень удачно ложится на её архитектуру. Каждый процессор K8 является "системой в миниатюре", со своим "процессором" и Northbridge; а двухядерный K8 - "двухпроцессорная SMP-система в миниатюре". 

Интеграция Northbridge в процессор и SUMA-архитектура K8 не просто обеспечивает "более быстрый контроллер оперативной памяти", - она заодно позволяет очень эффективно решать и ряд свойственных многопроцессорным системам проблем. Например, SUMA решает "проблему общей памяти".  

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

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

Считайте сами: если, например, одиночный процессор 20% своего времени простаивал, ожидая данных из оперативной памяти, то "двушка" будет простаивать 33% времени, а "четверка" - 50%. В пересчёте на общую производительность, 1P-система работает со скоростью 100%, 2P-система - со скоростью 167% (вместо расчётных 200%), а 4P-система - со скоростью 250% (вместо 400%). Более того: получить даже пятикратный прирост производительности в данном случае невозможно в принципе (см. график ниже)! И ничего с этим поделать невозможно. Интересно, кстати, что этот эффект свойственен исключительно многопроцессорным системам: если в примере выше заменить оперативную память на вдвое более быструю, то производительность однопроцессорной системы возрастет лишь на жалкие 11%. (Такие "ужасы" получаются в программах, которые много времени проводят в ожидании данных от памяти (не из кэша, а именно из ОЗУ: если у нас программа почти всегда работает с кэшем - никаких проблем не возникает). То есть если на одном процессоре 80% времени вычислений и 20% ожидания данных из памяти, то на двух получаем "40%" вычислений и "20%" ожидания данных из памяти (в пересчёте к "старым" процентам); выигрыш составляет 100/60 = 167%. И так далее. Ставим вдвое более быструю память - получаем на двухпроцессорной системе "80%" вычислений и "10%" ожидания данных из памяти; выигрыш - 100/90=111%). 

В идеале любая многопроцессорная  система должна быть хорошо сбалансирована - слишком быстрая память обходится  слишком дорого; слишком медленная - сводит эффект от установки нескольких процессоров к минимуму. То есть если для однопроцессорной системы  вполне достаточно двухканальной оперативной  памяти DDR (а практика показывает, что  это, скорее всего, так), то в "двушку" желательно установить четырехканальный, а в "квад" - восьмиканальный контроллер памяти DDR. Но на практике даже четырехканальный контроллер пока обходится слишком дорого: заикаться же о чем-то большем в "классических" SMP даже не приходится. 

Но это всё - в SMP: а вот в NUMA (типа AMD-шной), где двухканальный контроллер памяти интегрирован в каждый процессор, суммарная производительность подсистемы памяти как раз и возрастает пропорционально количеству процессоров. Правда, у NUMA, как уже было сказано, "свои тараканы" - неоднородность скорости работы различных участков памяти. 

Обычные SMP страдают еще и от "проблемы общей шины": мало сделать быстрый контроллер памяти - нужно еще и обеспечить достаточно быструю передачу полученных из памяти данных к процессору. Что толку с того, что чипсет Intel 955X Express, поддерживает двухканальную оперативную память DDR2 667 МГц с пиковой пропускной способностью 10,7 Гбайт/с, если 800-мегагерцовая процессорная шина не позволяет "прокачивать" более 6,4 Гбайт/с? И ведь это еще не всё: чем больше процессоров мы помещаем на системную шину, тем сложнее обеспечить безошибочную передачу по ней данных (возрастает электрическая нагрузка, усложняется разводка). В итоге если один процессор свободно работает с шиной 800 и даже 1066 МГц, то два процессора уже вынуждены ограничиться шиной не выше 800 МГц, а четыре - так и вовсе работают только с шиной 667 МГц и ниже. Вот так всё неидеально получается для SMP. Мегабайты и даже десятки мегабайт кэш-памяти третьего уровня для них не роскошь, а жестокая необходимость.Intel, правда, нашла достаточно успешный способ отчасти обойти эту проблему, используя в новейших многопроцессорных системах сразу две независимых процессорных шины. Но в неоднородной AMD-шной SUMA-архитектуре этой проблемы-то вообще нет!В итоге эта "общая" шина у AMD получается настолько быстродействующая, что ядра друг другу практически не мешают - их ограничивает только пропускная способность оперативной памяти, да ведущих во "внешний мир" линков HyperTransport. 

Подытожим, есть две  архитектуры, два производителя, Intel - SMP , AMD - SUMA. У каждого свои

достоинства и свои недостатки. Но даже не это главное, процессоры без соответствующего программного обеспечения и ОС просто железки. Уже есть оптимизированные приложения для двухядерников - например Photoshop cs2 гораздо шустрее.

 

Многоядерные процессоры: технологии(Intel и AMD). Часть 2.

 

В первой части обзора рассматривалась архитектура многоядерных процессоров AMD&Intel. Однако при выборе процессора для персонального использования дома или в офисе, недостаточно выбирать только между SMP и SUMA архитектурой. Все же на сегодня нет значительного отрыва ни у одного из конкурентов, несмотря на разницу в архитектуре. Вернее отрыв есть, но какой-то неубедительный он. АМД хорош в одних задачах, Интел в других, получается среднее арифметическое. А например, при расчете числа Пи- утилитой Super PI- двухядерный Athlon x2 3800 проигрывает одноядерному Athlon 3500+, пусть на доли секунд, но всетаки.

В этой части рассмотрим технологии Hyper Threading, Hyper transport.

  

Hyper Threading 
 

Несмотря на отставание от AMD в 64 битных технологиях, а также  проигрывая в производительности 2-х  ядерных десктопных процессоров(до C2D), Intel все же тратила и тратит денег на исследования много больше AMD. И всегда имеет чего-нибудь в загашнике. У пентиумов уже была микроархитектура NetBurst, а всем известный Hyper Threading является в каком-то смысле её логическим продолжением.(еще в 2001 году)

Микроархитектура Intel NetBurst позволяет получить максимальный выигрыш в производительности при выполнении одиночного потока инструкций, то есть при выполнении одной задачи. Однако даже в случае специальной оптимизации программы не все исполнительные модули процессора оказываются задействованными на протяжении каждого тактового цикла. В среднем при выполнении кода, типичного для набора команд IA-32, реально используется только 35% исполнительных ресурсов процессора, а 65% исполнительных ресурсов процессора простаивают, что означает неэффективное использование возможностей процессора. Было бы вполне логично реализовать работу процессора таким образом, чтобы в каждом тактовом цикле максимально использовать его возможности. Именно эту идею и реализует технология Hyper-Threading, подключая незадействованные ресурсы процессора к выполнению параллельной задачи.

Сейчас трудное  предложение 

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

А если проще, то технология Hyper-Threading позволяет организовать два логических процессора в одном физическом. 
 

Посмотрим на рисунок. Синими квадратами изображены команды  одного потока, а розовыми второго. Видно, что в принципе они используют различные регистры процессора, а  большая часть регистров простаивает. Для выполнения первого и второго  потока последовательно, процессор  затратит 10 тактов(каждый поток по 5 тактов). Принцип Hyper Threading как раз и состоит в том, чтобы использовать незадействованные регистры процессора для параллельной обработки второго потока. Но идеальных ситуаций не бывает. Вот и в нашем случае, в одни и теже регистры пытается записаться и первый и второй поток. Поэтому выполнение 2х потоков с использованием Hyper Threading заняло не 5, а 7 тактов. 

Этот козырь Интел  использовало также и в 2х ядерных Pentium Extreme Edition. Так из физически двухядерного, получился логически четырехядерный процессор!!

Сейчас с переходом  на C2D, Интел отказывается от Hyper-Threading, он остается только на Celeron D. Кстати, именно поэтому процессоры Celeron D не будут спешить расстаться с архитектурой NetBurst. Другими словами, процессоры Celeron на ядре Conroe пока не появятся, данное семейство бюджетных процессоров будет использоваться для "утилизации" имеющихся запасов ядер Prescott и CedarMill. То есть для продажи под видом Celeron, остатков старых процессоров. Однако слишком уж проста и с той же стороны перспективна эта технология для полного отказа от нее. 
 

HyperTransport 
 

Теперь перейдем к АМД. Кроме выпуска первых десктопных 64 битных процессоров, чем АМД конечно годится,( причем гордится настолько, что решила отказаться от магических циферок 64 в названии процессора -мол если написано Athlon, то и так ясно, что процессор 64 битный) у компании есть еще один мощный предмет для гордости. 

Шина HyperTransport (HT), ранее известная как Lightning Data Transport (LDT), - это двунаправленная последовательно/параллельная компьютерная шина, с высокой пропускной способностью и малыми задержками.

Исторически HyperTransport разрабатывался AMD в качестве процессорной шины нового поколения специально для чипов с интегрированным контроллером памяти (архитектура AMD64). В многопроцессорных системах на основе AMD Opteron подсистема памяти "размазана" по всем процессорам - у каждого есть своя локальная память, подключенная через интегрированный контроллер, и каждый может обращаться к памяти любого другого процессора. Локальная память "быстрая", а память соседа - "медленная", причем чем "дальше" расположен сосед, тем медленнее память. Медлительность является следствием того, что для обращения к соседу требуется проделать целый ряд операций - переслать по межпроцессорной шине запрос, дождаться его выполнения контроллером памяти адресата, вернуть данные по шине обратно. Очевидно, что чем быстрее при этом шина, тем более "однородна" память. 

Исходя из этих соображений  и проектировалась новая шина, призванная обеспечить пропускную способность не меньшую, чем у оперативной памяти, и минимальные задержки на передачу данных и сообщений. Получилось действительно неплохо, что даже дало AMD повод назвать свою архитектуру не NUMA, а SUMA - Slightly Uniform Memory Architecture, то есть "почти однородная" архитектура памяти.(напомню NUMA -неоднородный доступ к памяти).

Но разработчики не стали делать типичную быструю  узкоспециализированную процессорную (системную) шину. Напротив, в соответствии с веяниями времени они соорудили  очень быструю последовательную шину данных и предусмотрели возможности  для ее "переноса" в более  простые и медленные варианты с уменьшенными частотами и разрядностью (в отличие от PCI Express, которая масштабируется "вверх" - от x1 к х16 и x32).

Информация о работе Понятие многозадачности