КАТАЛОГ ТОВАРОВ

Срок доставки товара в течении 1-3 дней !!!

 

ПОЛЬЗОВАТЕЛЬ
КОРЗИНА

Высокопроизводительные вычисления: проблемы и решения. Количество универсальных процессоров


Количество унифицированных шейдерных блоков (или универсальных процессоров)

Унифицированные шейдерные блоки объединяют два типа перечисленных выше блоков, они могут исполнять как вершинные, так и пиксельные программы (а также геометрические, которые появились в DirectX 10). Унификация блоков шейдеров значит, что код разных шейдерных программ (вершинных, пиксельных и геометрических) универсален, и соответствующие унифицированные процессоры могут выполнить любые программы из вышеперечисленных. Соответственно, в новых архитектурах число пиксельных, вершинных и геометрических шейдерных блоков как бы сливается в одно число — количество универсальных процессоров.

Блоки текстурирования (tmu)

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

Блоки операций растеризации (rop)

Блоки растеризации осуществляют операции записи рассчитанных видеокартой пикселей в буферы и операции их смешивания (блендинга). Как уже отмечалось выше, производительность блоков ROP влияет на филлрейт и это — одна из основных характеристик видеокарт. И хотя в последнее время её значение несколько снизилось, еще попадаются случаи, когда производительность приложений сильно зависит от скорости и количества блоков ROP. Чаще всего это объясняется активным использованием фильтров постобработки и включенным антиалиасингом при высоких настройках изображения.

Объем видеопамяти

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

В каждом приложении есть определенный объем видеопамяти, которого хватает для всех данных, и хоть 4 ГБ туда поставь — у нее не появится причин для ускорения рендеринга, скорость будут ограничивать исполнительные блоки. Именно поэтому почти во всех случаях видеокарта с 320 Мбайт видеопамяти будет работать с той же скоростью, что и карта с 640 Мбайт (при прочих равных условиях). Ситуации, когда больший объем памяти приводит к видимому увеличению производительности, существуют, это очень требовательные приложения в высоких разрешениях и при максимальных настройках. Но такие случаи весьма редки, поэтому, объем памяти учитывать конечно нужно, но не забывая о том, что выше определенного объема производительность просто не растет, есть более важные параметры, такие как ширина шины памяти и ее рабочая частота.

studfiles.net

Основные характеристики видеокарт

 

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

 

Тактовая частота видеочипа

 

Рабочая частота GPU измеряется в мегагерцах, в миллионах тактов в секунду. Эта характеристика прямо влияет на производительность видеочипа, чем она выше, тем больший объем работы чип может выполнить в единицу времени, обработать большее количество вершин и пикселей. Пример из реальной жизни: частота видеочипа, установленного на плате RADEON X1900 XTX равна 650 МГц, а точно такой же чип на RADEON X1900 XT работает на частоте в 625 МГц. Соответственно будут отличаться и все основные характеристики производительности. Но далеко не только рабочая частота чипа однозначно определяет производительность, на его скорость сильно влияет и архитектура: количество различных исполнительных блоков, их характеристики и т.п.

 

В последнее время участились случаи, когда тактовая частота для отдельных блоков GPU отличается от частоты работы всего остального чипа. То есть, разные части GPU работают на разных частотах, и сделано это для увеличения эффективности, ведь некоторые блоки способны работать на повышенных частотах, а другие - нет. Из последних примеров можно назвать семейство GeForce 8800 от NVIDIA, видеочип модели GTS работает на частоте 512 МГц, но универсальные шейдерные блоки тактуются на значительно более высокой частоте - 1200 МГц.

 

Скорость заполнения (филлрейт)

 

Скорость заполнения показывает, с какой скоростью видеочип способен отрисовывать пиксели. Различают два типа филлрейта: пиксельный (pixel fill rate) и текстурный (texel rate). Пиксельная скорость заполнения показывает скорость отрисовки пикселей на экране и зависит от рабочей частоты и количества блоков ROP (блоков операций растеризации и блендинга), а текстурная - это скорость выборки текстурных данных, которая зависит от частоты работы и количества текстурных блоков.

 

Например, пиксельный филлрейт у GeForce 7900 GTX равен 650 (частота чипа) * 16 (количество блоков ROP) = 10400 мегапикселей в секунду, а текстурный - 650 * 24 (кол-во блоков текстурирования) = 15600 мегатекселей/с. Чем больше первое число - тем быстрее видеокарта может отрисовывать готовые пиксели, а чем больше второе - тем быстрее производится выборка текстурных данных. Оба параметра важны для современных игр, но они должны быть сбалансированы. Именно поэтому количество блоков ROP в чипах семейства G7x, на которых построено семейство GeForce 7, меньше количества текстурных и пиксельных блоков.

 

Количество блоков пиксельных шейдеров (или пиксельных процессоров)

 

Пиксельные процессоры - это одни из главных блоков видеочипа, которые выполняют специальные программы, известные также как пиксельные шейдеры. По числу блоков пиксельных шейдеров и их частоте можно сравнивать шейдерную производительность разных видеокарт. Так как большая часть игр сейчас ограничена производительностью исполнения пиксельных шейдеров, то количество этих блоков очень важно! Если одна модель видеокарты основана на GPU с 8 блоками пиксельных шейдеров, а другая из той же линейки - 16 блоками, то при прочих равных вторая будет вдвое быстрее обрабатывать пиксельные программы, и в целом будет производительнее. Но на основании одного лишь количества блоков делать однозначные выводы нельзя, обязательно нужно учесть и тактовую частоту и разную архитектуру блоков разных поколений и производителей чипов. Чисто по этим цифрам прямо можно сравнивать чипы только в пределах одной линейки одного производителя: AMD(ATI) или NVIDIA. В других же случаях нужно обращать внимание на тесты производительности в интересующих играх.

 

Количество блоков вершинных шейдеров (или вершинных процессоров)

 

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

 

Количество унифицированных шейдерных блоков (или универсальных процессоров)

 

Унифицированные шейдерные блоки объединяют два типа перечисленных выше блоков, они могут исполнять как вершинные, так и пиксельные программы (а также геометрические, которые появились в DirectX 10). Впервые унифицированная архитектура была применена в видеочипе игровой консоли Microsoft Xbox 360, этот графический процессор был разработан компанией ATI. В видеочипах для персональных компьютеров унифицированные шейдерные блоки появились не так давно, с появлением плат NVIDIA GeForce 8800. И, похоже, что все DirectX 10 совместимые видеочипы будут основаны на подобной унифицированной архитектуре. Унификация блоков шейдеров значит, что код разных шейдерных программ (вершинных, пиксельных и геометрических) универсален, и соответствующие унифицированные процессоры могут выполнить любые программы из вышеперечисленных. Соответственно, в новых архитектурах число пиксельных, вершинных и геометрических шейдерных блоков как бы сливается в одно число - количество универсальных процессоров.

 

Блоки текстурирования (TMU)

 

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

 

Блоки операций растеризации (ROP)

 

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

 

Нужно еще раз отметить, что современные видеочипы нельзя оценивать только числом разнообразных блоков и их частотой. Каждая серия GPU использует новую архитектуру, в которой исполнительные блоки сильно отличаются от старых, да и соотношение количества разных блоков может отличаться. Компания ATI первой применила архитектуру, в которой количество блоков пиксельных шейдеров было в разы больше числа блоков текстурирования. Это было сделано немного преждевременно, на наш взгляд, но в некоторых приложениях пиксельные блоки используются более активно, чем остальные и для таких приложений подобное решение будет неплохим вариантом, не говоря уже о будущем. Также, в предпоследней архитектуре AMD(ATI) нет отдельных пиксельных конвейеров, пиксельные процессоры не «привязаны» к блокам TMU. Впрочем, у NVIDIA в GeForce 8800 получилось еще сложнее...

 

Объем видеопамяти

 

Собственная память используется видеочипами для хранения необходимых данных: текстур, вершин, буферов и т.п. Казалось бы, что чем её больше - тем лучше. Но не всё так просто, оценка мощности видеокарты по объему видеопамяти - это наиболее распространенная ошибка! Значение объема памяти неопытные пользователи переоценивают чаще всего, используя его для сравнения разных моделей видеокарт. Оно и понятно — раз параметр, указываемый во всех источниках одним из первых, в два раза больше, то и скорость у решения должна быть в два раза выше, считают они. Реальность же от этого мифа отличается тем, что рост производительности растет до определенного объема и после его достижения попросту останавливается.

В каждой игре есть определенный объем видеопамяти, которого хватает для всех данных, и хоть 4 ГБ туда поставь - у нее не появится причин для ускорения рендеринга, скорость будут ограничивать исполнительные блоки, о которых речь шла выше. Именно поэтому во многих случаях видеокарта с 512 Мбайт видеопамяти будет работать с той же скоростью, что и карта с 1024 Мбайт (при прочих равных условиях). Ситуации, когда больший объем памяти приводит к видимому увеличению производительности, существуют, это очень требовательные игры в высоких разрешениях и при максимальных настройках. Но такие случаи до сих пор редки, поэтому, объем памяти учитывать нужно, но не забывая о том, что выше определенного объема производительность просто не растет, есть более важные параметры, такие как ширина шины памяти и ее рабочая частота.

 

Ширина шины памяти

 

Ширина шины памяти является важнейшей характеристикой, влияющей на пропускную способность памяти (ПСП). Большая ширина позволяет передавать большее количество информации из видеопамяти в GPU и обратно в единицу времени, что положительно влияет на производительность в большинстве случаев. Теоретически, по 128-битной шине можно передать в два раза больше данных за такт, чем по 64-битной. На практике разница в скорости рендеринга хоть и не достигает двух раз, но весьма близка к этому во многих случаях с упором в пропускную способность видеопамяти.

Современные видеокарты используют разную ширину шины: от 64 до 512 бит, в зависимости от ценового диапазона и времени выпуска конкретной модели GPU. Для low-end видеокарт чаще всего используется 64- и (значительно реже) 128-бит, для среднего уровня 128-бит и иногда 256-бит, ну а high-end видеокарты используют шины от 256 до 512 бит шириной.

 

Частота видеопамяти

 

Еще одним параметром, влияющим на пропускную способность памяти, является её тактовая частота. А как мы поняли выше, повышение ПСП прямо влияет на производительность видеокарты в 3D приложениях. Частота шины памяти на современных видеокартах бывает от 500 МГц до 2000 МГц, то есть может отличаться в четыре раза. И так как ПСП зависит и от частоты памяти и от ширины ее шины, то память с 256-битной шиной, работающая на частоте 1000 МГц, будет иметь большую пропускную способность, по сравнению с 1400 МГц памятью с 128-битной шиной.

 

Типы памяти

 

На видеокарты устанавливают несколько различных типов памяти. Старую SDR память с одинарной скоростью передачи мы рассматривать не будем, её уже почти нигде не встретишь. Все современные типы памяти DDR и GDDR позволяют передавать в два раза большее количество данных на той же тактовой частоте за единицу времени, поэтому цифру её рабочей частоты зачастую указывают удвоенной (умножают на два). Так, если для DDR памяти указана частота 1400 МГц, то эта память работает на физической частоте в 700 МГц, но указывают так называемую «эффективную» частоту, то есть ту, на которой должна работать SDR память, чтобы обеспечить такую же пропускную способность.

 

Основное преимущество DDR2 памяти заключается в возможности работы на больших тактовых частотах, а соответственно - увеличении пропускной способности по сравнению с предыдущими технологиями. Это достигается за счет увеличенных задержек, которые, впрочем, не так важны для видеокарт. Первой платой, использующей DDR2 память, стала NVIDIA GeForce FX 5800 Ultra. По сути, на ней стояла GDDR2 память, которая не настоящая DDR2, а нечто среднее между технологиями DDR и DDR2. После применения GDDR2 в серии GeForce FX 5800, последующие видеокарты NVIDIA использовали DDR память, но эта память получила дальнейшее распространение в GeForce FX 5700 Ultra и в некоторых более поздних mid-end видеокартах. С тех пор технологии графической памяти продвинулись дальше, был разработан стандарт GDDR3, который близок к спецификациям DDR2, с некоторыми изменениями, сделанными специально для видеокарт.

 

GDDR3 — это специально предназначенная для видеокарт память, с теми же технологиями, что и DDR2, но с улучшениями характеристик потребления и тепловыделения, что позволило создать микросхемы, работающие на более высоких тактовых частотах. И опять же, несмотря на то, что стандарт был разработан в ATI, первой видеокартой, ее использующей, стала вторая модификация NVIDIA GeForce FX 5700 Ultra, а следующей стала GeForce 6800 Ultra.

 

GDDR4 — это дальнейшее развитие «графической» памяти, работающее почти в два раза быстрее, чем GDDR3. Основными отличиями GDDR4 от GDDR3, существенными для пользователей, являются в очередной раз повышенные рабочие частоты и сниженное энергопотребление. Технически, память GDDR4 не сильно отличается от GDDR3, это дальнейшее развитие тех же идей. Первыми видеокартами с чипами GDDR4 на борту стали RADEON X1950 XTX, а у компании NVIDIA продукты на базе этого типа памяти еще не вышли. Преимущества новых микросхем памяти перед GDDR3 в том, что энергопотребление модулей может быть примерно на треть ниже. Это достигается за счет более низкого номинального напряжения для GDDR4.

 

Начиная с GPU семейства RV7x0, контроллерами памяти видеокарт поддерживается новый тип памяти GDDR5, работающий на эффективно учетверённой частоте до 4 ГГц и выше (теоретически предполагается до 7 ГГц), что даёт пропускную способность до 120 ГБ/с с применением 256-битного интерфейса. Если для повышения ПСП у GDDR3/GDDR4 памяти приходилось использовать 512-битную шину, переход на использование GDDR5 позволяет увеличить производительность вдвое при меньших размерах чипов и меньшем потреблении энергии. Первые чипы поддерживают напряжение 1.5 В (в отличие от 2.0 В для GDDR3, к примеру) и предлагают скорости до 1000*4=4.0 ГГц.

 

Итак, видеопамять самых современных типов: GDDR3 и GDDR5, отличается от DDR некоторыми деталями, но также работает с удвоенной/учетверённой передачей данных. В ней применяются некоторые специальные технологии, позволяющие поднять частоту работы. Так, GDDR2 память обычно работает на более высоких частотах, по сравнению с DDR, GDDR3 — на еще более высоких, а GDDR5 обеспечивает максимальную частоту и пропускную способность на данный момент.

 

Tехнология NVIDIA SLI - Следующая >>
 

www.itech.am

Основные характеристики видеокарт | Все о видеокартах | Железо

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

Тактовая частота видеочипа

Рабочая частота GPU измеряется в мегагерцах, в миллионах тактов в секунду. Эта характеристика прямо влияет на производительность видеочипа, чем она выше, тем больший объем работы чип может выполнить в единицу времени, обработать большее количество вершин и пикселей. Пример из реальной жизни: частота видеочипа, установленного на плате RADEON X1900 XTX равна 650 МГц, а точно такой же чип на RADEON X1900 XT работает на частоте в 625 МГц. Соответственно будут отличаться и все основные характеристики производительности. Но далеко не только рабочая частота чипа однозначно определяет производительность, на его скорость сильно влияет и архитектура: количество различных исполнительных блоков, их характеристики и т.п.

В последнее время участились случаи, когда тактовая частота для отдельных блоков GPU отличается от частоты работы всего остального чипа. То есть, разные части GPU работают на разных частотах, и сделано это для увеличения эффективности, ведь некоторые блоки способны работать на повышенных частотах, а другие — нет. Из последних примеров можно назвать семейство GeForce 8800 от NVIDIA, видеочип модели GTS работает на частоте 512 МГц, но универсальные шейдерные блоки тактуются на значительно более высокой частоте — 1200 МГц.

Скорость заполнения (филлрейт)

Скорость заполнения показывает, с какой скоростью видеочип способен отрисовывать пиксели. Различают два типа филлрейта: пиксельный (pixel fill rate) и текстурный (texel rate). Пиксельная скорость заполнения показывает скорость отрисовки пикселей на экране и зависит от рабочей частоты и количества блоков ROP (блоков операций растеризации и блендинга), а текстурная — это скорость выборки текстурных данных, которая зависит от частоты работы и количества текстурных блоков.

Например, пиксельный филлрейт у GeForce 7900 GTX равен 650 (частота чипа) * 16 (количество блоков ROP) = 10400 мегапикселей в секунду, а текстурный — 650 * 24 (кол-во блоков текстурирования) = 15600 мегатекселей/с. Чем больше первое число - тем быстрее видеокарта может отрисовывать готовые пиксели, а чем больше второе - тем быстрее производится выборка текстурных данных. Оба параметра важны для современных игр, но они должны быть сбалансированы. Именно поэтому количество блоков ROP в чипах семейства G7x, на которых построено семейство GeForce 7, меньше количества текстурных и пиксельных блоков.

Количество блоков пиксельных шейдеров (или пиксельных процессоров)

Пиксельные процессоры — это одни из главных блоков видеочипа, которые выполняют специальные программы, известные также как пиксельные шейдеры. По числу блоков пиксельных шейдеров и их частоте можно сравнивать шейдерную производительность разных видеокарт. Так как большая часть игр сейчас ограничена производительностью исполнения пиксельных шейдеров (см. технологические обзоры игр), то количество этих блоков очень важно! Если одна модель видеокарты основана на GPU с 8 блоками пиксельных шейдеров, а другая из той же линейки — 16 блоками, то при прочих равных вторая будет вдвое быстрее обрабатывать пиксельные программы, и в целом будет производительнее. Но на основании одного лишь количества блоков делать однозначные выводы нельзя, обязательно нужно учесть и тактовую частоту и разную архитектуру блоков разных поколений и производителей чипов. Чисто по этим цифрам прямо можно сравнивать чипы только в пределах одной линейки одного производителя: AMD(ATI) или NVIDIA. В других же случаях нужно обращать внимание на тесты производительности в интересующих играх.

Количество блоков вершинных шейдеров (или вершинных процессоров)

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

Количество унифицированных шейдерных блоков (или универсальных процессоров)

Унифицированные шейдерные блоки объединяют два типа перечисленных выше блоков, они могут исполнять как вершинные, так и пиксельные программы (а также геометрические, которые появились в DirectX 10). Впервые унифицированная архитектура была применена в видеочипе игровой консоли Microsoft Xbox 360, этот графический процессор был разработан компанией ATI. А в видеочипах для персональных компьютеров унифицированные шейдерные блоки появились не так давно, с появлением плат NVIDIA GeForce 8800. И, похоже, что все DirectX 10 совместимые видеочипы будут основаны на подобной унифицированной архитектуре. Унификация блоков шейдеров значит, что код разных шейдерных программ (вершинных, пиксельных и геометрических) универсален, и соответствующие унифицированные процессоры могут выполнить любые программы из вышеперечисленных. Соответственно, в новых архитектурах число пиксельных, вершинных и геометрических шейдерных блоков как бы сливается в одно число — количество универсальных процессоров.

Блоки текстурирования (TMU)

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

Блоки операций растеризации (ROP)

Блоки растеризации осуществляют операции записи рассчитанных видеокартой пикселей в буферы и операции их смешивания (блендинга). Как мы уже отмечали выше, производительность блоков ROP влияет на филлрейт и это — одна из основных характеристик видеокарт всех времен. И хотя в последнее время её значение несколько снизилось, еще попадаются случаи, когда производительность приложений сильно зависит от скорости и количества блоков ROP (см. технологические обзоры игр). Чаще всего это объясняется активным использованием фильтров постобработки и включенным антиалиасингом при высоких игровых настройках.

Нужно еще раз отметить, что современные видеочипы нельзя оценивать только числом разнообразных блоков и их частотой. Каждая серия GPU использует новую архитектуру, в которой исполнительные блоки сильно отличаются от старых, да и соотношение количества разных блоков может отличаться. Компания ATI первой применила архитектуру, в которой количество блоков пиксельных шейдеров было в разы больше числа блоков текстурирования. Это было сделано немного преждевременно, на наш взгляд, но в некоторых приложениях пиксельные блоки используются более активно, чем остальные и для таких приложений подобное решение будет неплохим вариантом, не говоря уже о будущем. Также, в предпоследней архитектуре AMD(ATI) нет отдельных пиксельных конвейеров, пиксельные процессоры не «привязаны» к блокам TMU. Впрочем, у NVIDIA в GeForce 8800 получилось еще сложнее...

Рассмотрим ситуацию на примере видеокарт GeForce 7900 GT и GeForce 7900 GS. Обе они имеют одинаковые рабочие частоты, интерфейс памяти и даже одинаковый видеочип. Но модификация 7900 GS использует GPU с 20 активными блоками пиксельных шейдеров и текстурных блоков, а видеокарта 7900 GT — по 24 блока каждого типа. Рассмотрим разницу в производительности этих двух решений в игре Prey:

Разница в количестве основных исполнительных блоков в 20% дала разный прирост скорости в тестовых разрешениях. Значение 20% оказалось недостижимо потому, что производительность в Prey не ограничена на этих видеокартах только скоростью блоков TMU и ROP. Разница в разрешении 1024x768 составила меньше 8%, а в более высоких достигла 12%, что ближе к теоретической разности в количестве исполнительных блоков.

Объем видеопамяти

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

В каждой игре есть определенный объем видеопамяти, которого хватает для всех данных, и хоть 4 ГБ туда поставь — у нее не появится причин для ускорения рендеринга, скорость будут ограничивать исполнительные блоки, о которых речь шла выше. Именно поэтому почти во всех случаях видеокарта с 320 Мбайт видеопамяти будет работать с той же скоростью, что и карта с 640 Мбайт (при прочих равных условиях). Ситуации, когда больший объем памяти приводит к видимому увеличению производительности, существуют, это очень требовательные игры в высоких разрешениях и при максимальных настройках. Но такие случаи весьма редки, поэтому, объем памяти учитывать нужно, но не забывая о том, что выше определенного объема производительность просто не растет, есть более важные параметры, такие как ширина шины памяти и ее рабочая частота. Подробнее о выборе объема видеопамяти читайте во второй части статьи.

Ширина шины памяти

Ширина шины памяти является важнейшей характеристикой, влияющей на пропускную способность памяти (ПСП). Большая ширина позволяет передавать большее количество информации из видеопамяти в GPU и обратно в единицу времени, что положительно влияет на производительность в большинстве случаев. Теоретически, по 128-битной шине можно передать в два раза больше данных за такт, чем по 64-битной. На практике разница в скорости рендеринга хоть и не достигает двух раз, но весьма близка к этому во многих случаях с упором в пропускную способность видеопамяти.

Современные видеокарты используют разную ширину шины: от 64 до 512 бит, в зависимости от ценового диапазона и времени выпуска конкретной модели GPU. Для low-end видеокарт чаще всего используется 64- и (значительно реже) 128-бит, для среднего уровня 128-бит и иногда 256-бит, ну а high-end видеокарты используют шины от 256 до 512 бит шириной.

Частота видеопамяти

Еще одним параметром, влияющим на пропускную способность памяти, является её тактовая частота. А как мы поняли выше, повышение ПСП прямо влияет на производительность видеокарты в 3D приложениях. Частота шины памяти на современных видеокартах бывает от 500 МГц до 2000 МГц, то есть может отличаться в четыре раза. И так как ПСП зависит и от частоты памяти и от ширины ее шины, то память с 256-битной шиной, работающая на частоте 1000 МГц, будет иметь большую пропускную способность, по сравнению с 1400 МГц памятью с 128-битной шиной.

Рассмотрим относительную производительность видеокарт с разной пропускной способностью на примере видеокарт RADEON X1900 XTX и RADEON X1950 XTX, которые используют почти одинаковые GPU с одними характеристиками и частотой. Основные их отличия состоят в типе и частоте используемой памяти — GDDR3 на частоте 775(1550) МГц и GDDR4 на 1000(2000) МГц, соответственно.

Хорошо видно, как отстает карта с меньшей пропускной способностью памяти, хотя разница никогда не достигает теоретических 29%. Разница между достигнутой частотой кадров растет с увеличением разрешения, начинаясь с 8% в 1024x768 и достигая 12-13% в максимальных режимах. Но это сравнение видеокарт с небольшой разницей в ПСП, а особенное внимание на параметры ширины шины памяти и частоты ее работы следует уделять при покупке недорогих видеокарт, на многие из которых ставят лишь 64-битные интерфейсы, что сильно сказывается на их производительности. Вообще, покупка решений на базе 64-бит шины для игр вовсе не рекомендуется.

Типы памяти

На видеокарты устанавливают несколько различных типов памяти. Старую SDR память с одинарной скоростью передачи мы рассматривать не будем, её уже почти нигде не встретишь. Все современные типы памяти DDR и GDDR позволяют передавать в два раза большее количество данных на той же тактовой частоте за единицу времени, поэтому цифру её рабочей частоты зачастую указывают удвоенной (умножают на два). Так, если для DDR памяти указана частота 1400 МГц, то эта память работает на физической частоте в 700 МГц, но указывают так называемую «эффективную» частоту, то есть ту, на которой должна работать SDR память, чтобы обеспечить такую же пропускную способность.

Основное преимущество DDR2 памяти заключается в возможности работы на больших тактовых частотах, а соответственно — увеличении пропускной способности по сравнению с предыдущими технологиями. Это достигается за счет увеличенных задержек, которые, впрочем, не так важны для видеокарт. Первой платой, использующей DDR2 память, стала NVIDIA GeForce FX 5800 Ultra. По сути, на ней стояла GDDR2 память, которая не настоящая DDR2, а нечто среднее между технологиями DDR и DDR2. После применения GDDR2 в серии GeForce FX 5800, последующие видеокарты NVIDIA использовали DDR память, но эта память получила дальнейшее распространение в GeForce FX 5700 Ultra и в некоторых более поздних mid-end видеокартах. С тех пор технологии графической памяти продвинулись дальше, был разработан стандарт GDDR3, который близок к спецификациям DDR2, с некоторыми изменениями, сделанными специально для видеокарт.

GDDR3 — это специально предназначенная для видеокарт память, с теми же технологиями, что и DDR2, но с улучшениями характеристик потребления и тепловыделения, что позволило создать микросхемы, работающие на более высоких тактовых частотах. И опять же, несмотря на то, что стандарт был разработан в ATI, первой видеокартой, ее использующей, стала вторая модификация NVIDIA GeForce FX 5700 Ultra, а следующей стала GeForce 6800 Ultra.

Ну а GDDR4 — это последнее поколение "графической" памяти, работающее почти в два раза быстрее, чем GDDR3. Основными отличиями GDDR4 от GDDR3, существенными для пользователей, являются в очередной раз повышенные рабочие частоты и сниженное энергопотребление. Технически, память GDDR4 не сильно отличается от GDDR3, это дальнейшее развитие тех же идей. Первыми видеокартами с чипами GDDR4 на борту стали RADEON X1950 XTX, а у компании NVIDIA продукты на базе этого типа памяти еще не вышли. Преимущества новых микросхем памяти перед GDDR3 в том, что энергопотребление модулей может быть примерно на треть ниже. Это достигается за счет более низкого номинального напряжения для GDDR4.

Итак, видеопамять самых современных типов: GDDR3 и GDDR4, отличается от DDR некоторыми деталями, но также работает с удвоенной передачей данных. В ней применяются некоторые специальные технологии, позволяющие поднять частоту работы. Так, GDDR2 память обычно работает на более высоких частотах, по сравнению с DDR, GDDR3 — на еще более высоких, ну а GDDR4 обеспечивает максимальную частоту и пропускную способность.

www.malbred.com

Число универсальных процессоров - это... Что такое Число универсальных процессоров?

 Число универсальных процессоров
  • Видеокарты:
    Число универсальных процессоров (от 1 до 8192 )

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

Свойства товаров. Академик. 2017.

  • Число трехконтурных конфорок
  • Число уровней JPEG

Смотреть что такое "Число универсальных процессоров" в других словарях:

  • Intel 8086 — <<   Intel 8086   >> Центральный процессор Микропроцессор Intel 8086 Производство: 8 июня 1978 Производители …   Википедия

  • 8086 — <<   Intel 8086   >> Центральный процессор Микропроцессор Intel 8086 Производство …   Википедия

  • Процессор — У этого термина существуют и другие значения, см. Процессор (значения). Запрос «ЦП» перенаправляется сюда; см. также другие значения. Intel Celeron 1100 Socket 370 в корпусе FC PGA2, вид снизу …   Википедия

  • Процессоры — Intel 80486DX2 в керамическом корпусе PGA. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид снизу. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид сверху …   Википедия

  • ЦП — Intel 80486DX2 в керамическом корпусе PGA. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид снизу. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид сверху …   Википедия

  • ЦПУ — Intel 80486DX2 в керамическом корпусе PGA. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид снизу. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид сверху …   Википедия

  • Центральное процессорное устройство — Intel 80486DX2 в керамическом корпусе PGA. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид снизу. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид сверху …   Википедия

  • Центральный процессор — Intel 80486DX2 в керамическом корпусе PGA. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид снизу. Intel Celeron 400 socket 370 в пластиковом корпусе PPGA, вид сверху …   Википедия

  • КОМПЬЮТЕР — устройство, выполняющее математические и логические операции над символами и другими формами информации и выдающее результаты в форме, воспринимаемой человеком или машиной. Первые компьютеры использовались главным образом для расчетов, т.е.… …   Энциклопедия Кольера

  • Многоядерный процессор — Викиновости по теме …   Википедия

  • Микроархитектура — Схема, иллюстрирующая место микроархитектурного уровня в многоуровневой структуре компьютера. В компьютерной инженерии …   Википедия

goods_properties.academic.ru

Технологический предел процессоров: techwork

Павел Астахов (techwork) wrote, 2017-06-13 17:25:00 Павел Астаховtechwork 2017-06-13 17:25:00 И так мы находимся на завершающей точке развития законна Мура. Когда количество транзисторов в процессорах удваивается каждые два года.0,54307 нм это размер решётки кристаллического кремния используемого в производстве микросхем. Именно на него ане на размер атома надо ориентироваться. Хотя и на размер атома но только в графеновые технологиях позволяющих что то там уменьшить.Надо понимать что с текущей технологией разработанной IBM совместно с GF и Samsung которая назвается 5 нм. но по сути это улучшенная 7 нм технология ограничитель на размер ноды 10 пролётов решётки. Собственно это и есть теоретически достижимый минимум кремния. Что бы организовать устойчивый p-n переход в количеств двух штук и что бы не образовался тунельный эффект и наводки от соседних нод требуется 10 пролётов и не забываем что мы должны прибавить диаметр 1 атома у кремния. если вы не понмаете почему то вы дебил и я вам не смогу рассказать весь курс школьной физики. Ну потому что так сказал Иисус и Аллах и Будда с Яхве - Так есть - примите.0,54307*10+0,24=5,6707 нм Это минимальный размер ноды который реально а не теоретически достижим. Собственно IBM только что это реализовала. назвав это 5 нм.А что дальше ?. Но сначала надо понять а что сейчас.Сейчас только у Интел есть реально массовая технология 10 нм с приемлимым выходом годных. Она вполне в законе мура и вопросов нет. У Самсунг и GF технология 11 нм. У остальных и того хуже. Китайцы и вовсе занялись рисованием не существующих у них нанометров за 10 нм выдавая 13 нм технологию. Но дальше на техпроцес 7-5 последний реальный, а не виртуальный уже будет тяжёлый переход. И даже Интел не уверены что успеют его вписать в закон Мура. Поэтому сейчас релизятся куча всяких дезовых роадмапов как от AMD так и от Intel и никто не знает когда и что на самом деле выйдет.Почему ? Да потому что возникли сложности с выходом годных. Да прототип есть и вышел малой серией , а выход годных там такой что процессор ниже 2000 долларов долго не опустится в цене даже и выйди они. Даже на 10 нм выход годных 50-70% в зависимости от фаба. И больше 70% не поднять никак. Т.е. 10 нм чипы будут стоить в полтора раза дороже 14 нм всегда. А меньше ... 15-20% годных а процессорах это мало. На память выход 60% и он вполне нормален. Хотя память на 7 нм будет дороже 10 нм в 1,7 раза всегда.Intel не зная удасться ли решить проблему вовремя зароадмапил Icelake. Да выйдет и 7 нм камень тысяч за пять долларов и кто то его даже купит так или иначе. НО тут есть ещё один момент - стоимость ватт-доллар-производительность. Он более менее держался но еслипроблемы продолжатся то уже в 2018 году он будет нарушен. Что бы как то это оттянуть АМД и Интел пошли на увеличение количества ядер процессоров. АМД анонсировал 16 ядерный процессор и он таки выйдет ибо проект уже на заводе. А вот с остальным туманно и мутно. Всё дело в том что технология используемая сейчас в настольных Интел не позволяет более 12 ядер. Связано это И !!! с тем что ядра от Интел больше на 15% чем ядра от АМД. Да они во многих задачах быстрее но больше. Кроме того у Интел немного больше требованя к минимальному объёму кеша. Раньше Интел не замечал этого опережая всех по технологиям. Но сейчас уже не так прекрасно. К чему это приведёт ? Если эти компании сейчас не выдержат темп это приведёт к краху криптовалют считаемых на процессорах. Криптовалюте требуется постоянный рост вычислительных мощностей но с тем что бы рост сложности вычислений был меньше чем прирост мощности/затраты. Которые зависят от стоимости железа и энергопотребления железа. Для криптовалют есть главный ограничитель - затратный предел. Когда затраты на вычисления становятся дороже полученной криптовалюты (которые по сути облигации), а затраты складываются из стоимости оборудования, его обслуживания, сооружений датацентров и ЭНЕРГИИ!!!. Когда развитие технологий встаёт железо снижает скорость удешевления, однако энергоэффективность падает в геометрической прогрессии так как для поддержания скорости получения денег требуется всё больше и больше карт в той же прогрессии что и усложнение алгоритма. А если алгоритм не усложнять то криптовалюта подвергнется гиперинфляции. Так что толькорост энергозатрат. Несложно вычислить зависмость увеличения сложности вычислений и количества потребляемой энергии и роста затрат на оборудование и датацентры.Так вот - крах криптовалют близок . Кто то скажет а я на виеокарта - я отвечу - а ты мой пушистый зверёк не заметил что у видеокарт кристаллы стали по 600 мм а карты потребляют по 450 вт и водяное охлаждение в стоке. Такое это очень хреновый симптом. Это значит что им уже расти некуда.Titan X можно принять за единицу. она сделана по 28 нм технологии. Она кстати уже производительность на ватт никакая. Но позволяет чётко увидеть предел роста производительности видеокарт. Этот предел - 4 Titan X. По сути тот у кого в компе стоит четыре Titan X может протестировать и он получит производтельность последней кремневой видеокарты которая будет. Только она потреблять энергии будет в четыре раза меньше чем эта сборка. Аналогично тот кто купит 16 ядерный AMD Ryzen 27 июля 2017 года купит процессор который морально никогда не устареет. Потому что именно такими и будут рядовые домашние машины в 2027 году и 2037 году. Снизится только энергопотребление и появятся боле дорогие версии. Да 40 ядер максимум. Но толку от них уже особого для домашних задач не будет. Всё - рост единичной производительности кончен. Что это означает ? То что и видеокарты не в меньшей, а даже в большей степени испытывают предел технологий. Благодаря биткоину они развивались быстрее процессоров. Но обратная сторона этого в том что они достигнут энергопредела даже раньше процессоров. По сути осталось... ну GP107 делается о технологи 14 нм. следующая итерация уже 10 нм и ВСЁ. дальше да появятся карты на 7 и 5,6707нм но стоить будут адово. И явно не для криптовалют такой товар. Почему кстати видеокарты и отстают по техпроцессам от процессоров, они используют только массовый дешёвый процесс. процесс 7-5 станет дешёвым очень не скоро. Хотя если производители пойдут на жертвы 7 нм всё таки станет массовым в срок что бы не нарушить закон Мура. По энергии - легко можно снизить потребление в два раза. Но это ПРЕДЕЛ. Дальше ещё в два раза будет сложно и дорого. Таким образом вырисовывается картина весьма интересная.По процессорам.Сейчас оба производителя будут наращивать ядра, хотя смысла особого в этом нет для обычных вычислений. Но предел даже на 5,6707 нм у Intel 36 ядер. AMD 40 ядер. Больше просто не возможно да и это водяное охлаждение обязательно ну ли монстромедный с огромным кулером девайс. Это всё на этом развитие вычислительной техники кончится. Но закон мура кончится раньше а криптовалюта на процессорах начнёт проседать ещё раньше. Закон мура кончится на 7 нм. Когда придёт время следующей итерации техпроцесса готового для этого с нормальным выходом не будет. Это кристмас 2018 год. Криптовалюта вычисляемая на процессорах дорожает по энергостратам как и видеокартная давно, но более менее синхронно с ростом валют. Однако опережающий рост энергозатрат начнётся в сентябре 2017. Примерно год после этого останется до краха таких валют. На видеокартах ситуация примерно такая же с той разницей что там энергозатраты стали расти ещё два года назад с опережением. И сейчас их спасает только перераздутие пузыря биткоина а также жульнические криптовалюты-пирамиды с заранее нагенерённым количеством валюты принадлежащей основателям. Последняя итерация на 10 нм ещё как то оттянет конец. Ну так что бы он произошёл синхронно с криптовалютой на процессорах. Так же это где то на пол года может оттянуть обрушение нефти до 22-24 долл за барель. В итоге срок смерти скорее всего это лето 2019 +-(0,5-1) год. Как раз Интел и АМД снимут все сливки с 7 нм процесса а 5,6707 нм так долго элитным и останется. После этого последует полный крах ИТ индустрии аналогичный схлопыванию доткомбабла, но куда более масштабный. Раз в триста. После этого будет три года "Смертельной Битвы". Её переживут не все ИТ компании. Полностью вымрет 30% интернет компаний. Из оставшихся 99% сменят владельцев будучи проданными по смешным ценам. На рынке мобильных телефонов произойдёт тоже самое что с ТВ произошло в своё время. Сейчас телевизор это ящик стоящий у большинства 10-15 лет. Да эти ящики продаются но сверхприбыли на них нет. Там много чего произойдёт , может и я из чего извлеку выгоду поэтому рассказывать не буду. Кстати труд программиста подешевеет при этом не сильно всего процентов на 30. И я не буду говорить почему. Ну а 3 нм - ну есть тестовые схемы из девяти нод, но они не стабильны. А что бы мур не сдох они должны пойти в серию в 2020 году. А сейчас 2017, а они в таком состоянии как будто 2010. Т.е. не ранее 2027 года. А вот дальше 2,64 нм опуститься просто физически не возможно. Кстати 2 - 64 у кого то прикольное чуство юмора. Предел развития ИТ положить в цифрах 2 и 64 двойка в шестой степени. Если вспомнить стандартный вавилонский магический круг там та же хрень. Ну то что иудеи с 19 века выдают за звезду Давида это та фигня что в этом магическом круге нарисована. Симвология соединение двух людей мужчины и женщины. ммм занятно.Да а дальше что ? А ничего. Все разработки которые сейчас есть это вещи более теоретические чем реальные.Никакие квантовые компьютеы обычным пользователям не помогут. Да есть специализированные компьютеры которы за один такт решают массив матриц но простому человеку это совершенно ничего не даст - не свестелок не перделок, не чего то полезного. Есть всякие теоретические технологии НО даже наиболее перспективные оптические технологии это всего лишь повышение частоты интерконнекта. Что даст ну например ускорение скорости обмена между блокам памяти, но никак не вычислений общего порядка. Т.е. решения очень дороги а дают преимущества по очень конкретным действиям местам. Дальше только экстенсивное развитие. А именно - больше кристалов в одном чипе. Но тут проблема тепловыделения. Но благодаря технологии HBM используемой в AMD Fiji или технологии HMC используемой Fujitsu в её суперкомпьютерах возможно вынести кеш L2 из процессора. И набрать его куда большими объемами таким методом, а внутреннее пространство кристалла использовать для новых ядер. По сути архитектура видеокарт уже такая. Таким образом мы можем получить 128 ядерные процессоры. И даже 256 ядерные ... правда на водяном охлаждении. И возникают большие вопросы об утилизации ядер. Ведь даже 16 домашние приложения не могут зачастую нагрузить корректно, Возникают постоянныеперекосы в нагрузке и всё упирается в самое загруженное ядро. Есть технология разгона такого ядра и отключения соседних чтобы не нарушать термопакет, но .... 5 ггц а дальше ? В общем всё край. и 128 ядерные машины свнешним кешем покупать уже будут только под рабочие станции где такое решение смогут утилировать. А домашний комп будет 16 ядер. И 10 и 20 лет спустя.

PhotoHint http://pics.livejournal.com/igrick/pic/000r1edq

techwork.livejournal.com

Процессоры для высокопроизводительных вычислений | Открытые системы. СУБД

Быстрый рост производительности крупнейших суперкомпьютерных инсталляций мира в последние годы в значительной мере определяется развитием кластеров, которые обычно строятся на базе универсальных высокопроизводительных микропроцессоров, применяемых и в обычных серверах. Исключения— недавно возглавлявшие этот список векторные суперкомпьютеры NEC Earth Simulator и МРР-системы с распределенной оперативной памятью IBM BlueGene— общей тенденции не меняют.

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

Будет ли продолжаться такое развитие и далее, и если будет, то как долго? Некоторые изменения уже произошли: процессоры стали многоядерными. Cегодня универсальные высокопроизводительные процессоры имеют по два-четыре ядра, и рост числа ядер, очевидно, будет продолжаться, причем также, возможно, по экспоненциальному закону.

Американская программа DARPA HPCS нацелена на преодоление рубежа производительности 1 PFLOPS. Формально в ней не прописаны конкретные технические решения. Однако, думается, ее реализация будет происходить скорее на традиционном пути; революционные же изменения можно ожидать лишь к 2010 году.

В Intel утверждают, что к 2015 году «на столе» (то есть в персональном компьютере) будет доступна производительность уровня 1 TFLOPS. И это будет реализовано за счет применения процессоров с десятками и больше числом ядер. Некоторые эксперименты на этом пути уже проводятся [1]. Однако единственный доступный прообраз многоядерных процессоров будущего — это, пожалуй, только что появившийся 64-ядерный Tile64 компании Tilera [2].

Cовременные процессоры

Сегодняшние процессоры для HPC (High Performance Computing, высокопроизводительные вычислительные системы) можно разделить на три группы: векторные; высокопроизводительные универсальные; специализированные, применяемые в компьютерных системах вместе с традиционными универсальными процессорами.

Векторные процессоры, ставшие знаменитыми благодаря Сеймуру Крею, сегодня интересны в первую очередь благодаря продукции японской компании NEC, которая сумела нарушить тенденцию сближения пиковой производительности векторных процессоров и универсальных процессоров. Новейшие векторные процессоры суперкомпьютера NEC SX-9 имеют пиковую производительность свыше 100 GFLOPS. В максимальной конфигурации SX-9 имеет 8192 процессора и 840 TFLOPS векторной производительности (970 TFLOPS— с учетом теоретической возможности одновременной работы скалярного блока с плавающей запятой). Таким образом, уровень в 1 PFLOPS почти достигается в рамках одного суперкомпьютера, а не кластера.

Для сравнения напомним, что лучший на сегодняшний день универсальный процессор IBM Power6 обладает производительностью раз в пять ниже— менее 20 GFLOPS. Основным архитектурным преимуществом векторных процессоров, кроме большой пиковой производительности, является высокая пропускная способность памяти. В SX-9 на четыре процессора приходится пропускная способность памяти в 2 Тбайт/с.

Столько же процессоров, сколько и SX-9, может иметь векторный Сray X1E, недавно снятый с производства. Однако его процессоры гораздо скромнее— как по пропускной способности памяти (34 Гбайт/с на процессор), так и по пиковой производительности— 18 GFLOPS. Cобственно говоря, векторные процессоры быстрее универсальных процессоров только на длинных векторах.

Мировым лидером производительности среди универсальных микропроцессоров является RISC-процессор Power6 с тактовой частотой 4,7 ГГц (см. табл. 1). Он обходит конкурентов и по целочисленной (SPECint2006) производительности, и по производительности с плавающей запятой (SPECfp2006), и по тактовой частоте. Кроме эффективной микроархитектуры такому успеху способствовала и передовая КМОП-технология (65 нм, SOI).

* Указано базовое/пиковое значение

Источник: www.spec.org 2007.

Однако в результатах SPECcpu2006 существенен вклад большого объема кэш-памяти старшего уровня. Так, для Itanium 2 Montecito/1,6 ГГц емкость кэша третьего уровня составляет 24 Мбайт, а для Power6— 32 Мбайт, в дополнение к 8 Мбайт второго уровня, по 4 Мбайт на ядро [4]. Для сравнения, двухъядерные Opteron имеют кэш второго уровня емкостью 2 Мбайт (1 Мбайт на ядро), двухъядерные Xeon 51XX— 4 Мбайт. Большая емкость кэша, очевидно, удорожает процессор. В случае если рабочее множество страниц приложения плохо локализуется в кэше, становится важной пропускная способность памяти. По этому показателю процессоры Intel, не имеющие встроенного контроллера памяти, уступают другим.

Наконец, важным является и показатель пиковой производительности [3]: он не только дает верхнюю границу производительности, но и служит ориентиром для некоторых задач линейной алгебры, на которых производительность приближается к пиковой (см. табл. 2). Все рассматриваемые процессоры могут выдавать четыре 64-разрядных результата с плавающей запятой за такт, и их пиковая производительность, выраженная в GFLOPS, в четыре раза выше тактовой частоты в гигагерцах. Здесь также лидирует Power6 (18,8 GFLOPS), а Itanium 2 вследствие низкой частоты с результатом 6,4 GFLOPS уступает даже Fujitsu SPARC64 VI (9,6 GFLOPS).

Увы, разработка семейства Itanium с «пост-RISC» архитектурой EPIC не увенчалась тем грандиозным техническим и маркетинговым успехом, на который претендовали ее создатели. Причины этого вовсе не обязательно искать в технической плоскости. Во многом это обусловлено выбором для Itanium характерной для RISC-процессоров маркетинговой модели с высокой торговой маржой. К тому же с какого-то момента развитие линии Itanium вообще, похоже, перестало ориентироваться на быстрый рост производительности. Это, думается, произошло при переходе от Itanium 2/Montecito к Montvale; тактовая частота процессора при этом возросла с 1,6 Ггц всего до 1,66 ГГц. В то же время семейство IBM Power демонстрирует, что RISC-подход в техническом плане вовсе не сдает своих позиций и что для достижения высокой производительности микроархитектурная реализация важнее архитектуры команд (об этом же свидетельствуют и высокие показатели производительности х86-процессоров).

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

Специализированные процессоры

В последние годы активно предпринимаются попытки «дополнить» универсальные процессоры специализированными аппаратными средствами для ускорения вычислений с плавающей запятой. Многие из этих средств не ориентированы исключительно на HPC, однако могут ими использоваться. Некоторые из них представляют возможности работы с векторами в модели SIMD, характерной для векторных процессоров.

Среди интересных для HPC специализированных процессоров следует упомянуть, в частности, различные программируемые графические процессоры (Graphical Processor Unit, GPU), процессоры Сell/B.E разработки IBM, Sony и Toshiba [5], ускорители вычислений с плавающей запятой типа ClearSpeed [6] и др. Некоторые из этих средств реализованы в форме отдельных плат— «акселераторов» вычислений, другие (например, Cell) интегрируют в одной микросхеме и «спецсредства», и универсальные процессоры.

Многие из этих специализированных процессоров могут производить расчеты с плавающей запятой только одинарной точности (32-разрядные), либо могут производить также и 64-разрядные вычисления, но с гораздо более низкой производительностью. Несомненно, это резко снижает привлекательность таких процессоров для HPC, где, как правило, проводятся 64-разрядные вычисления с плавающей запятой.

Cпектр архитектурных решений, используемых в такой специализированной аппаратуре, достаточно широк. Это и программируемые логические интегральные схемы (FPGA), и матричные процессоры, и архитектуры, управляемые потоком данных, в том числе потоковые процессоры. FPGA-подход уже получил достаточное распространение и применяется, например, в суперкомпьютерах Сray XD1. Однако, представляется, трудности программирования остаются серьезным препятствием на пути превращения FPGA в массовую платформу для HPC.

Видимо, несколько лучшие «HPC-перспективы» у Сell. За ними стоят мощные финансовые и технические ресурсы известных разработчиков. В настоящее время для рынка HPC в IBM предлагают серверы BladeCenter QS21, содержащие по два процессора Сell и оперативную память емкостью до 2 Гбайт. На базе таких серверов в одной стойке можно достигнуть производительности 6,4 TFLOPS. В Лос-Аламосской национальной лаборатории США совместно с IBM работают над проектом создания гибридного суперкомпьютера Roadrunner, который будет содержать 16 тыс. ядер AMD Opteron и 16 тыс. процессоров Сell при пиковой производительности 1,6 PFLOPS.

В состав процессора Cell входит ядро PowerPC c двухуровневым кэшем, блок SIMD для 128-разрядных данных и восемь блоков SPE c плавающей запятой. Каждый SPE имеет небольшую собственную локальную SRAM-память емкостью 256 Кбайт для хранения команд и данных. Блоки SPE общаются между собой через шину, к которой подсоединяются и ядро PowerPC, и контроллер памяти.

Каждый SPE может завершать на каждом такте четыре операции с плавающей запятой (32-разрядные!) типа «умножить и сложить», что эквивалентно восьми результатам с плавающей запятой за такт на один SPE, или 64 результатам за такт— на весь процессор Cell.

В настоящее время частота Cell в QS21 составляет 3,2 ГГц, чему отвечает пиковая производительность 204,8 GFLOPS— на порядок выше, чем у современных универсальных микропроцессоров. Но при работе с двойной точностью производительность падает на порядок. Кроме того, для достижения указанного уровня производительности необходимо применять программное управление локальной памятью SPE. Это опять-таки значительно обостряет проблему программирования.

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

Примером ускорителя для операций с плавающей запятой, ориентированного на работу с х86-совместимыми процессорами, являются платы ClearSpeed Advance X620 и e620, предназначенные для работы с шинами PCI-X и PCI-E х8 соответственно. Каждая плата может работать и с одинарной, и с двойной точностью и содержит по два матричных процессора CSX600. Каждый такой процессор содержит 96 процессорных элементов, работающих на частоте всего 210 МГц, что способствует высокой производительности в расчете на 1 Вт.

Плата e620 имеет собственную память емкостью 1 Гбайт, суммарная пропускная способность обращения к внутренней памяти составляет в данном случае 200 Гбайт/с, к «внешней» памяти— 6,4 Гбайт/с [6]. При этом на матричном умножении достигается производительность 66 GFLOPS.

Этот ускоритель снабжен программными средствами разработки, включающими в себя, кроме кросс-компилятора и отладчика, библиотеку оптимизированных математических подпрограмм BLAS третьего уровня и LAPACK. Подпрограммы этой библиотеки, в свою очередь, общаются с драйвером ввода/вывода, который передает коды и данные через канал PCI-E в плату акселератора, а затем обратно— результаты расчетов. За ускорение расчетов в несколько раз здесь приходится расплачиваться необходимостью обмена данными между процессором и платой e620. Поэтому более перспективным, вероятно, являлась бы интеграция ядер типа CSX600 в единую микросхему с х86-процессором. Это отвечает общей тенденции увеличения числа процессорных ядер.

В составе команд СSX600 имеются как «монокоманды», которые исполняет один процессорный элемент, так и «поликоманды», которые могут исполнять все 96 процессорных элементов (это отвечает архитектуре SIMD).

Архитектурно близки к подходу SIMD (для него, как известно, характерно наличие команд работы с векторами) графические процессоры, которые могут применяться и для «универсальных» (General Purpose, GP) расчетов. Соответствующий подход обычно называют GPGPU (General Purpose Graphical Processor Unit). В этом направлении работают все основные игроки рынка GPU— Intel, AMD и Nvidia.

Intel не использует термин GPGPU. Весной 2007 года на форуме разработчиков Intel анонсировала продукт Larrabee, который можно рассматривать как своеобразный ответ на программируемые графические процессоры. Larrabee будет содержать много (больше восьми) ядер, в системе команд которых архитектура IA будет дополнена GPU-подобными командами. Демонстрационная версия ожидается в 2008-м, а сам продукт— в 2009 году. В Intel считают такой подход лучше, чем применение отдельных микросхем GPU, поскольку шина между процессором и GPU cтановится узким местом, в первую очередь из-за задержек передачи.

Nvidia в 2007 году объявила о создании архитектуры G80. В своей линейке продуктов Tesla [7] компания придерживается более традиционного подхода GPGPU. Компания предлагает три продукта: процессор С870 и компьютеры на его базе— настольный D870 и сервер S870. GPU содержит 128 блоков с плавающей запятой, однако только одинарной точности (64-разрядные вычисления будут поддерживаться в следующем поколении продуктов Tesla). Его пиковая производительность превышает 500 GFLOPS. Собственная оперативная память для GPU имеет емкость 1,5 Гбайт при пропускной способности 76,8 Гбайт/с, а для коммуникаций с GPU применяется канал PCI-E x16. Настольный компьютер включает в себя два GPU, сервер— четыре.

Области HPC, на которые в Nvidia ориентируют cвои продукты,— сейсмоанализ, медицинская диагностика, молекулярное моделирование. (Вероятно, в последнем случае имеется в виду все та же молекулярная динамика. Вследствие особенности ее задач для молекулярной динамики уже традиционно разрабатываются специализированные аппаратные средства— можно вспомнить, например, еще IBM MDGrape [8].)

На сегодня самым продвинутым аппаратным решением, поддерживающим вычисления с двойной точностью, выглядит GPU FireStream 9179, только что анонсированный AMD, который также работает через PCI-E x16. Надо отметить, что GPU от Nvidia (GeForce), как и GPU от ATI, вошедшей в состав AMD, основаны на потоковой архитектуре (streaming processing), которую можно считать развитием архитектурной концепции управления со стороны потока данных [9].

Эта концепция вообще отвечает не фон-неймановской архитектуре: каждая команда выполняется, как только становятся доступны ее операнды. В вершинах графа потока данных в простейшем случае располагаются команды. Недостатком такого низкоуровневого управления от потока данных являются накладные расходы на коммуникации при пересылке операндов [9].

Эффективной альтернативой такому подходу является потоковая архитектура. Здесь классическим можно считать проект Merrimac по созданию суперкомпьютера с производительностью 1 PFLOPS. В такой потоковой архитектуре в вершинах графа находятся не отдельные команды, а программы (kernels), которые могут содержать сотни команд.

Этот подход базируется на том факте, что современные КМОП-технологии сделали арифметические вычисления дешевыми, а пропускную способность— дорогой [10]. Для эксплуатации этой особенности суперкомпьютер должен базироваться на высокой «арифметической интенсивности» (отношение времени расчетов к пропускной способности) и параллелизме приложения. Последнее позволяет задействовать большое число (в Merrimac— сотни) арифметико-логических устройств (АЛУ). Через FIFO-очереди результаты из одних АЛУ могут попасть как исходные данные в другие АЛУ.Микросхема Merrimac имеет пиковую производительность 128 GFLOPS, соответственно 8192 таких микросхем позволяют достигнуть 1 PFLOPS.

Локальный характер таких потоковых программ отражается в архитектуре, содержащей большие файлы локальных регистров LRF (это способствует локальности коммуникаций в микросхеме) плюс так называемый потоковый файл регистров SRF.

Применение потоковых программ, работающих с иерархией регистров, помогает достигнуть уменьшения требуемого трафика в оперативную память на порядок. В качестве примеров использовались приложения газодинамики, гидродинамики, магнитогидродинамики и молекулярной динамики [10]. Потоки (streams) можно рассматривать как «обобщение» векторов. В Merrimac записи из потока выбираются командой загрузки потока, и одна команда может выполнять программы над одним или несколькими потоками данных.

Аналог файла векторных регистров в векторных суперкомпьютерах в Merrimac расщеплен на LRF (используемый для АЛУ-операций с тонкозернистой локальностью) и SRF— для обменов с памятью, грубозернистой локальности внешних циклов [10].

FireStream 9170, весьма перспективный с точки зрения HPC продукт, появится в первом квартале 2008 года (в AMD отмечают, что это первый в мире потоковый GPU c двойной точностью). Он содержит 32 потоковых ядра, основан на парадигме МРР и обладает пиковой производительностью 500 GFLOPS.

Как и Intel, AMD добавляет команды GPU-типа к архитектуре x86. Учитывая разнообразие аппаратных решений в рассматриваемой области и проблемы разработки программного обеспечения, интерес представляет общая программная платформа RapidMind, предоставляющая возможности высокоуровневого распараллеливания для ряда аппаратных архитектур, в том числе для GPU от Nvidia и AMD, а также Cell/B.E.

Процессоры с большим числом ядер

Остановимся теперь на процессорах, содержащих десятки ядер,— экспериментальной 80-ядерной микросхеме Intel [1] и 64-ядерном процессоре Tile64 [2] компании Tilera. Обе микросхемы характеризуются наличием межсоединения, построенного по типу двухмерной решетки. Учитывая его топологическую естественность, представляется, что в перспективе оно может стать основным и обеспечить хорошую масштабируемость по числу ядер.

Схема этого межсоединения чем-то напоминает кафельное покрытие (отдельные ядра— плитки, а межсоединение— «полоски» вокруг плиток), а потому обе компании ядра в своих процессорах именуют tile («кафель»). Впрочем, эту терминологию изобрели не они; в архитектуре предшественника Tile64— процессора Raw разработки Массачусетского технологического института— также применялся этот термин [11].

Общая архитектура перспективных многоядерных микросхем Intel предполагает решетку из ядер общего назначения и специализированных ядер. 80-ядерный прототип, TRC,— двухмерная решетка 8х10 с габаритами 22х14 мм, изготовлен по 8-слойной КМОП-технологии с типоразмером 65 нм, и каждый процессорный элемент содержит вычислительный элемент и 5-портовый неблокирующийся коммутатор, связывающий его с четырьмя соседями. Полная пропускная способность коммутатора равна 80 Гбайт/с. Вычислительный элемент содержит однотактные память данных (2 Кбайт) и команд (3 Кбайт), файл регистров емкостью 32 строки (десять портов чтения плюс четыре порта записи) и два 32-разрядных FPMAC-устройства с плавающей запятой. 9-стадийные конвейеры могут выполнять команды «умножить-и-сложить», это дает четыре результата с плавающей запятой за такт на процессорный элемент, каждый из которых использует VLIW длиной 96 бит, что обеспечивает возможность выполнения до восьми операций за такт.

Кроме того, в дальнейшем каждое ядро будет подсоединено к собственной многослойной SRAM-памяти емкостью 256 Кбайт (она будет располагаться над основной микросхемой), для чего зарезервирован пятый порт коммутатора. В TRC реализован ряд технологических инноваций по управлению электропитанием, в том числе введены новые команды, позволяющие «усыплять» или «пробуждать» любое отдельное ядро. Максимум производительности TRC равен 1,8 TFLOPS при частоте 5,6 ГГц.

Микросхему Tile64 разработчики считают относящейся к первому в мире семейству, способному масштабироваться до сотен и тысяч ядер. В отличие от TRC, Tile64— это промышленная продукция, за которой стоит свыше 40 полученных Tilera патентов.

Tilera, технологическими разработками которой руководит Ананд Агарвал, была создана в 2004 году для продвижения на рынок наработок, полученных при создании процессора Raw, над которым Агарвал трудился ранее.

Этот исследовательский процессор был, возможно, более универсальным, чем Tile64. Изготовленный по 180-нанометровой технологии IBM, он предполагал использование как параллелизма потоковых приложений, так и традиционного параллелизма на уровне команд, а также параллелизма на уровне нитей. Он показал многократное ускорение по сравнению с Pentium III, использующим КМОП-технологию того же типоразмера: от двух до девяти раз на последовательных программах, и в 10–100 раз для потоковых программ. Raw содержит 16 (4х4) программируемых ядер, каждое из которых конвейеризовано (глубина конвейера— восемь стадий) и имеет архитектуру в стиле MIPS [11].

Raw имеет частоту 425-500 МГц. Каждое ядро связано с четырьмя соседями (что заставляет считать топологию тороидальной, а не простой двухмерной решеткой. Эта сеть использует статическую маршрутизацию и имеет собственный кэш команд. Команды маршрутизатора может генерировать компилятор. Кроме статической, Raw имеет также динамические сети, в том числе сеть для доступа в оперативную память. При этом на тестах STREAM для пропускной способности памяти Raw оказался лучше даже векторного суперкомпьютера NEC SX-7 [11].

Рассмотрим другие характеристики архитектуры Tile64. Согласно некоторым источникам, для передачи данных к соседнему узлу требуется один такт. Соответствующее межсоединение, двухмерную сеть, разработчики называют iMesh (i— от intelligent). Для доставки данных самому удаленному ядру в массиве 8х8 тогда потребовалось бы 14 таких «прыжков», но если iMesh— не двухмерная решетка, а тор, реальное требуемое число прыжков меньше.

Подобно TRC, в Tile64 предусмотрены коммутаторы в каждом процессорном ядре. В компании Tilera утверждают, что iMesh обеспечивает на порядки более высокую пропускную способность, чем шина, при том, что расстояния между ядрами короче. Это способствует и сверхнизким величинам задержек.

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

С точки зрения производительности важно, что коммуникации в iMesh осуществляются без прерывания использующих ядра приложений и что сети iMesh имеют средства буферизации.

Каждое ядро Tile64 является полнофункциональным процессором и может выполнять коды «обычной» операционной системы и приложений. Ядра содержат кэши команд и данных первого уровня, а также кэш второго уровня. Коллекция таких кэшей разных ядер может считаться общей для всех них, и эта совокупность для приложений с общим полем оперативной памяти выступает в качестве общего многомегабайтного кэша третьего уровня. Страница памяти, загруженная в кэш какого-либо конкретного ядра, может быть при этом доступна для операций типа загрузки регистров/записи в память другими ядрами.

Каждое ядро имеет полный доступ к памяти и вводу/выводу, применяет виртуальную память, используя блоки TLB, поддерживает многоуровневую систему прерываний. Система команд ядра— VLIW c шириной в три команды [11]. В процессор интегрирован не только контроллер памяти, но и два порта 10G Ethernet.

Разработчики Tile64 предусмотрели специальную технологию Multicore Hardwall для разбиения на разделы компьютеров на базе этих микросхем. Для этого одно или более ядер объединяются в «процессорный остров», коммуникации ядер которого с ядрами вне острова отсутствуют. При попытке пакета пересечь границу острова фиксируется прерывание, обрабатываемое программным обеспечением— гипервизором. Это позволяет работать с разными операционными системами на разных островах.

Для Tile64 обеспечена поддержка Linux 2.6. Кроме того, доступны средcтва разработки MDE (Multicore Development Environment), включающие интегрированную среду разработки на базе Eclipse, компилятор Си, графические средства отладки и профилирования и др. Для оптимизации программ можно применять коммуникационную библиотеку iLib, содержащую средства управления процессами, поддержки сокетов, а также обменов сообщениями и коммуникаций в модели общей оперативной памяти. Имеется также библиотека сетевого ввода/вывода NetI/O для балансировки нагрузки с распределением трафика между ядрами [11].

Приложения, на которые ориентировали Tile64 его разработчики, это в первую очередь встроенные сетевые приложения и обработка цифрового видео.

***

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

Специализированные ядра, подобные современным графическим процессорам Firestream 9170, целесообразно интегрировать в одну микросхему с ядрами общего назначения. Действительно, представим себе типовой современный узел HPC-кластера,— двухсокетовый сервер с четырехъядерными процессорами, содержащий всего восемь ядер. Распараллеленное приложение будет иметь восемь вычислительно-интенсивных нитей, каждая из которых хотела бы работать с собственным GPU для своего ускорения. Но если GPU будут на платах PCI-E x16, может просто не доставать нужных слотов, и не только задержки, но и пропускная способность каналов могут оказаться узким местом.

Подходы Intel и Tilera с интеграцией большого числа ядер и применением двухмерной решетки в качестве межсоединения могут оказаться весьма перспективными. При этом все ядра могут быть одинаковы (Tile64) или включать специализированные ядра, как это предполагает в качестве возможности Intel. n

Литература

  1. S. Vangal, P. Kundu, Intelligent On-chip Interconnects: The 80-core Prototype and Beyond. Intel Development Forum, Spring 2007.

  2. Tile Processor Architecture. Tilera Corp., Technology Brief, 2007.

  3. J. Dongarra, Performance of various computers using standard linear equations software. Univ. Manchester Technical Report, Sept. 9th, 2007.

  4. H. Q. Le, W. J. Starke e.a., IBM POWER6 microarchitecture. IBM J. Res. Dev., v. 51, №. 6, 2007.

  5. T. Chen, R. Raghavan, J.N. Dale, Cell Broadband Engine Architecture and its first implementation— A performance View. IBM J. Res. Dev., v. 51, №. 5, 2007.

  6. СlearSpeed Advance e620 Accelerator. СlearSpeed Technology, Product Brief, 2007.

  7. Nvidia Tesla. GPU Computing Technical Brief, v.1.0.0, 2007.

  8. B.G. Elmegreen, R.H. Koch e.a., Simulations of magnetic materials with MDGRAPE-2. IBM J. Res. Dev., v. 48, N. 2, 2004.

  9. Б.Я.Цилькер, С.А.Орлов, «Организация ЭВМ и систем», Питер, М., 2004, 667 с.

  10.  W.J. Dally, P. Hanrahan e.a. Merrimac: Supercomputing with Streams. SC2003, Nov. 2003, Phoenix, Arizona.

  11. M.B. Taylor, W.Lee e.a., Evaluation of the Raw Microprocessor: An Exposed-Wire Delay Architecture for ILP and Streams, 2004 ISCA.

Михаил Кузьминский— старший научный сотрудник ИОХ РАН (Москва). C ним можно связаться по тел. (499) 135-6388.

Голубой ген Голубого гиганта http://www.osp.ru/os/2006/10/3910032

Динозавры эпохи микропроцессоров http://www.osp.ru/os/2004/08/185070

Современные подходы к повышению производительности http://www.osp.ru/os/2006/05/2449839

Хочешь ядер самых разных? http://www.osp.ru/cw/2005/15/88619

Мультипроцессор Cell http://www.osp.ru/os/2006/05/2449872

На заре тера-эры http://www.osp.ru/cw/2007/06/3953436

Многоядерные процессоры AMD http://www.osp.ru/os/2005/10/380433

www.osp.ru

проблемы и решения / Хабр

Компьютеры, даже персональные, становятся все сложнее. Не так уж давно в гудящем на столе ящике все было просто — чем больше частота, тем больше производительность. Теперь же системы стали многоядерными, многопроцессорными, в них появились специализированные ускорители, компьютеры все чаще объединяются в кластеры. Зачем? Как во всем этом многообразии разобраться? Что значит SIMD, SMP, GPGPU и другие страшные слова, которые встречаются все чаще? Каковы границы применимости существующих технологий повышения производительности?
Введение
Откуда такие сложности?
Компьютерные мощности быстро растут и все время кажется, что все, существующей скорости хватит на все. Но нет — растущая производительность позволяет решать проблемы, к которым раньше нельзя было подступиться. Даже на бытовом уровне есть задачи, которые загрузят ваш компьютер надолго, например кодирование домашнего видео. В промышленности и науке таких задач еще больше: огромные базы данных, молекулярно-динамические расчеты, моделирование сложных механизмов — автомобилей, реактивных двигателей, все это требует возрастающей мощности вычислений. В предыдущие годы основной рост производительности обеспечивался достаточно просто, с помощью уменьшения размеров элементов микропроцессоров. При этом падало энергопотребление и росли частоты работы, компьютеры становились все быстрее, сохраняя, в общих чертах, свою архитектуру. Менялся техпроцесс производства микросхем и мегагерцы вырастали в гигагерцы, радуя пользователей возросшей производительностью, ведь если «мега» это миллион, то «гига» это уже миллиард операций в секунду. Но, как известно, рай бывает либо не навсегда, либо не для всех, и не так давно он в компьютерном мире закончился. Оказалось, частоту дальше повышать нельзя — растут токи утечки, процессоры перегреваются и обойти это не получается. Можно, конечно, развивать системы охлаждения, применять водные радиаторы или совсем уж жидким азотом охлаждать — но это не для каждого пользователя доступно, только для суперкомпьютеров или техноманьяков. Да и при любом охлаждении возможность роста была небольшой, где-то раза в два максимум, что для пользователей, привыкших к геометрической прогрессии, было неприемлемо. Казалось, что закон Мура, по которому число транзисторов и связанная с ним производительность компьютеров удваивалась каждые полтора-два года, перестанет действовать. Пришло время думать и экспериментировать, вспоминая все возможные способы увеличения скорости вычислений.
Формула производительности
Возьмем самую общую формулу производительности:

Видим, что производительность можно измерять в количестве выполняемых инструкций за секунду. Распишем процесс поподробнее, введем туда тактовую частоту:

Первая часть полученного произведения — количество инструкций, выполняемых за один такт (IPC, Instruction Per Clock), вторая — количество тактов процессора в единицу времени, тактовая частота. Таким образом, для увеличения производительности нужно или поднимать тактовую частоту или увеличивать количество инструкций, выполняемых за один такт. Т.к. рост частоты остановился, придется увеличивать количество исполняемых «за раз» инструкций.

Включаем параллельность
Как же увеличить количество инструкций, исполняемых за один такт? Очевидно, выполняя несколько инструкций за один раз, параллельно. Но как это сделать? Все сильно зависит от выполняемой программы. Если программа написана программистом как однопоточная, где все инструкции выполняются последовательно, друг за другом, то процессору (или компилятору) придется «думать за человека» и искать части программы, которые можно выполнить одновременно, распараллелить.
Параллелизм на уровне инструкций
Возьмем простенькую программу:a = 1 b = 2 c = a + b Первые две инструкции вполне можно выполнять параллельно, только третья от них зависит. А значит — всю программу можно выполнить за два шага, а не за три.Процессор, который умеет сам определять независимые и непротиворечащие друг другу инструкции и параллельно их выполнять, называется суперскалярным. Очень многие современные процессоры, включая и последние x86 — суперскалярные процессоры, но есть и другой путь: упростить процессор и возложить поиск параллельности на компилятор. Процессор при этом выполняет команды «пачками», которые заготовил для него компилятор программы, в каждой такой «пачке» — набор инструкций, которые не зависят друг от друга и могут исполняться параллельно. Такая архитектура называется VLIW (very long instruction word — «очень длинная машинная команда»), её дальнейшее развитие получило имя EPIC (explicitly parallel instruction computing) — микропроцессорная архитектура с явным параллелизмом команд) Самые известные процессоры с такой архитектурой — Intel Itanium. Есть и третий вариант увеличения количества инструкций, выполняемых за один такт, это технология Hyper Threading В этой технологии суперскалярный процессор самостоятельно распараллеливает не команды одного потока, а команды нескольких (в современных процессорах — двух) параллельно запущенных потоков. Т.е. физически процессорное ядро одно, но простаивающие при выполнении одной задачи мощности процессора могут быть использованы для выполнения другой. Операционная система видит один процессор (или одно ядро процессора) с технологией Hyper Threading как два независимых процессора. Но на самом деле, конечно, Hyper Threading работает хуже, чем реальные два независимых процессора т.к. задачи на нем будут конкурировать за вычислительные мощности между собой.

Технологии параллелизма на уровне инструкций активно развивались в 90е и первую половину 2000х годов, но в настоящее время их потенциал практически исчерпан. Можно переставлять местами команды, переименовывать регистры и использовать другие оптимизации, выделяя из последовательного кода параллельно исполняющиеся участки, но все равно зависимости и ветвления не дадут полностью автоматически распараллелить код. Параллелизм на уровне инструкций хорош тем, что не требует вмешательства человека — но этим он и плох: пока человек умнее микропроцессора, писать по-настоящему параллельный код придется ему.

Параллелизм на уровне данных
Векторные процессоры
Мы уже упоминали скалярность, но кроме скаляра есть и вектор, и кроме суперскалярных процессоров есть векторные. Векторные процессоры выполняют какую-то операцию над целыми массивами данных, векторами. В «чистом» виде векторные процессоры применялись в суперкомьютерах для научных вычислений в 80-е годы. По классификации Флинна, векторные процессоры относятся к SIMD — (single instruction, multiple data — одиночный поток команд, множественный поток данных). В настоящее время в процессорах x86 реализовано множество векторных расширений — это MMX, 3DNow!, SSE, SSE2 и др. Вот как, например, выглядит умножение четырех пар чисел одной командой с применением SSE:

float a[4] = { 300.0, 4.0, 4.0, 12.0 }; float b[4] = { 1.5, 2.5, 3.5, 4.5 }; __asm { movups xmm0, a ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0 movups xmm1, b ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1 mulps xmm1, xmm0 ; // перемножить пакеты плавающих точек: xmm1=xmm1*xmm0 movups a, xmm1 ; // выгрузить результаты из регистра xmm1 по адресам a };

Таким образом, вместо четырех последовательных скалярных умножений мы сделали только одно — векторное. Векторные процессоры могут значительно ускорить вычисления над большими объемами данных, но сфера их применимости ограничена, далеко не везде применимы типовые операции над фиксированными массивами. Впрочем, гонка векторизации вычислений далеко не закончена — так в последних процессорах Intel появилось новое векторное расширение AVX (Advanced Vector Extension) Но гораздо интереснее сейчас выглядят

Графические процессоры
Теоретическая вычислительная мощность процессоров в современных видеокартах растет гораздо быстрее, чем в обычных процессорах (посмотрим знаменитую картинку от NVIDIA) Не так давно эта мощность была приспособлена для универсальных высокопроизводительных вычислений с помощью CUDA/OpenCL. Архитектура графических процессоров (GPGPU, General Purpose computation on GPU – универсальные расчеты средствами видеокарты), близка к уже рассмотренной SIMD. Она называется SIMT — (single instruction, multiple threads, одна инструкция — множество потоков). Так же как в SIMD операции производятся с массивами данных, но степеней свободы гораздо больше — для каждой ячейки обрабатываемых данных работает отдельная нить команд. В результате 1) Параллельно могут выполняться сотни операций над сотнями ячеек данных. 2) В каждом потоке выполняется произвольная последовательность команд, она может обращаться к разным ячейкам. 3) Возможны ветвления. При этом, правда, параллельно могут выполняться только нити с одной и той же последовательностью операций.

GPGPU позволяют достичь на некоторых задачах впечатляющих результатов. но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной палочкой-выручалочкой, а именно 1) Ускорить на GPU можно только хорошо параллелящийся по данным код. 2) GPU использует собственную память. Трансфер данных между памятью GPU и памятью компьютера довольно затратен. 3) Алгоритмы с большим количеством ветвлений работают на GPU неэффективно

Мультиархитектуры-
Итак, мы дошли до полностью параллельных архитектур — независимо параллельных и по командам, и по данным. В классификации Флинна это MIMD (Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных). Для использования всей мощности таких систем нужны многопоточные программы, их выполнение можно «разбросать» на несколько микропроцессоров и этим достичь увеличения производительности без роста частоты. Различные технологии многопоточности давно применялись в суперкомпьютерах, сейчас они «спустились с небес» к простым пользователям и многоядерный процессор уже скорее правило, чем исключение. Но многоядерность далеко не панацея.
Суров закон, но это закон
Параллельность, это хороший способ обойти ограничение роста тактовой частоты, но у него есть собственные ограничения. Прежде всего, это закон Амдала, который гласитУскорение выполнения программы за счет распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.

Ускорение кода зависит от числа процессоров и параллельности кода согласно формуле

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

Например, если выполнение последовательного кода занимает всего 25% от времени выполнения всей программы, то ускорить эту программу более чем в 4 раза не получится никак. Давайте построим график зависимости ускорения нашей программы от количества параллельно работающих вычислителей-процессоров. Подставив в формулу 1/4 последовательного кода и 3/4 параллельного, получим

Грустно? Еще как. Самый быстрый в мире суперкомпьютер с тысячами процессоров и терабайтами памяти на нашей, вроде бы даже неплохо (75%!) параллелящейся задаче, меньше чем вдвое быстрее обычного настольного четырехядерника. Причем всё еще хуже, чем в этом идеальном случае. В реальном мире затраты обеспечение параллельности никогда не равны нулю и потому при добавлении все новых и новых процессоров производительность, начиная с некоторого момента, начнет падать. Но как же тогда используется мощь современных очень-очень многоядерных суперкомпьютеров? Во многих алгоритмах время исполнения параллельного кода сильно зависит от количества обрабатываемых данных, а время исполнения последовательного кода — нет. Чем больше данных требуется обработать, тем больше выигрыш от параллельности их обработки. Потому «загоняя» на суперкомп большие объемы данных получаем хорошее ускорение. Например перемножая матрицы 3*3 на суперкомпьютере мы вряд ли заметим разницу с обычным однопроцессорным вариантом, а вот умножение матриц, размером 1000*1000 уже будет вполне оправдано на многоядерной машине. Есть такой простой пример: 9 женщин за 1 месяц не могут родить одного ребенка. Параллельность здесь не работает. Но вот та же 81 женщина за 9 месяцев могут родить (берем максимальную эффективность!) 81 ребенка, т.е.получим максимальную теоретическую производительность от увеличения параллельности, 9 ребенков в месяц или, в среднем, тот же один ребенок в месяц на 9 женщин. Большим компьютерам — большие задачи!

Мультипроцессор
Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и одно видимое для всех процессоров. адресное пространство. Мультипроцессоры отличаются по организации работы с памятью.Системы с общей памятью В таких системах множество процессоров (и процессорных кэшей) имеет доступ к одной и той же физической оперативной памяти. Такая модель часто называется симметричной мультипроцессорностью (SMP). Доступ к памяти при таком построении системы называется UMA (uniform memory access, равномерный доступ) т.к. любой процессор может обратиться к любой ячейке памяти и скорость этого обращения не зависит от адреса памяти. Однако каждый микропроцессор может использовать свой собственный кэш. Несколько подсистем кэш-памяти процессоров, как правило, подключены к общей памяти через шину

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

Когерентность кэша Допустим, у нас есть многопроцессорный компьютер. Каждый процессор имеет свой кэш, ну, как на рисунке вверху. Пусть некоторую ячейку памяти читали несколько процессоров — и она попала к ним в кэши. Ничего страшного, пока это ячейка неизменна — из быстрых кэшей она читается и как-то используется в вычислениях. Если же в результате работы программы один из процессоров изменит эту ячейку памяти, чтоб не было рассогласования, чтоб все остальные процессоры «видели» это обновление придется изменять содержимое кэша всех процессоров и как-то тормозить их на время этого обновления. Хорошо если число ядер/процессоров 2, как в настольном компьютере, а если 8 или 16? И если все они обмениваются данными через одну шину? Потери в производительности могут быть очень значительные.Многоядерные процессоры Как бы снизить нагрузку на шину? Прежде всего можно перестать её использовать для обеспечения когерентности. Что для этого проще всего сделать? Да-да, использовать общий кэш. Так устроены большинство современных многоядерных процессоров. Посмотрим на картинку, найдем два отличия от предыдущей. Да, кэш теперь один на всех, соответственно, проблема когерентности не стоит. А еще круги превратились в прямоугольники, это символизирует тот факт, что все ядра и кэши находятся на одном кристалле. В реальной действительности картинка несколько сложнее, кэши бывают многоуровневыми, часть общие, часть нет, для связи между ними может использоваться специальная шина, но все настоящие многоядерные процессоры не используют внешнюю шину для обеспечения когерентности кэша, а значит — снижают нагрузку на нее. Многоядерные процессоры — один из основных способов повышения производительности современных компьютеров. Уже выпускаются 6 ядерные процессоры, в дальшейшем ядер будет еще больше… где пределы? Прежде всего «ядерность» процессоров ограничивается тепловыделением, чем больше транзисторов одновременно работают в одном кристалле, тем больше этот кристалл греется, тем сложнее его охлаждать. А второе большое ограничение — опять же пропускная способность внешней шины. Много ядер требуют много данных, чтоб их перемалывать, скорости шины перестает хватать, приходится отказываться от SMP в пользуNUMANUMA (Non-Uniform Memory Access — «неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — архитектура, в которой, при общем адресном пространстве, скорость доступа к памяти зависит от ее расположения Обычно у процессора есть " своя" память, обращение к которой быстрее и «чужая», доступ к которой медленнее. В современных системах это выглядит примерно так

Процессоры соединены с памятью и друг с другом с помощью быстрой шины, в случае AMD это Hyper Transport, в случае последних процессоров Intel это QuickPath Interconnect Т.к. нет общей для всех шины то, при работе со «своей» памятью, она перестает быть узким местом системы. NUMA архитектура позволяет создавать достаточно производительные многопроцессорные системы, а учитывая многоядерность современных процессоров получим уже очень серьезную вычислительную мощность «в одном корпусе», ограниченную в основном сложностью обеспечения кэш-когерентности этой путаницы процессоров и памяти. Но если нам нужна еще большая мощность, придется объединять несколько мультипроцессоров в

Мультикомпьютер

Мультикомпьютер — вычислительная система без общей памяти, состоящая из большого числа взаимосвязанных компьютеров (узлов), у каждого из которых имеется собственная память. При работе над общей задаче узлы мультикомпьютера взаимодействуют через отправку друг другу сообщений. Современные мультикомпьютеры, построенные из множества типовых деталей, называют вычислительными кластерами. Большинство современных суперкомпьютеров построены по кластерной архитектуре, они объединяют множество вычислительных узлов с помощью быстрой сети (Gigabit Ethernet или InfiniBand) и позволяют достичь максимально возможной при современном развитии науки вычислительной мощности. Проблемы, ограничивающие их мощность, тоже немаленькие Это: 1) Программирование системы с параллельно работающими тысячами вычислительных процессоров 2) Гигантское энергопотребление 3) Сложность, приводящая к принципиальной ненадежности

Сводим все воедино
Ну вот, вкратце пробежались почти по всем технологиям и принципам построения мощных вычислительных систем. Теперь есть возможность представить себе строение современного суперкомпьютера. Это мультикомпьютер-кластер, каждый узел которого — NUMA или SMP система с несколькими процессорами, каждый из процессоров с несколькими ядрами, каждое ядро с возможностью суперскалярного внутреннего параллелизма и векторными расширениями. Вдобавок ко всему этому во многих суперкомпьютерах установлены GPGPU — ускорители. У всех этих технологий есть плюсы и ограничения, есть тонкости в применении. А теперь попробуйте эффективно загрузить-запрограммировать всё это великолепие! Задача нетривиальная… но очень интересная. Что-то будет дальше?
Источники информации
Курс «Основы параллельных вычислений» Интернет-университета суперкомпьютерных технологийКлассификация Флинна на сайте parallels.ruMultiProcessors, their Memory organizations and Implementations by Intel & AMD Многоядерность, как способ увеличения производительности вычислительной системы Википедия и Интернет

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

habr.com