company_banner

Хозяйка из настоящего — интегрированная графика (Intel GPU) 2013 или «миелофон у меня!»


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

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

    Итак, графический процессор Intel интегрирован во все без исключения мобильные, настольные и встраиваемые, а также в половину серверных моделей 4-ого поколения CPU Intel Core (известного перед выпуском как «Haswell»). Для интересующихся — Полный список моделей CPU со всеми характеристиками.

    Это — седьмое поколение графических решений Intel, если начинать отсчет с культовой Intel740 (отсюда, кстати, и неофициальное название этого семейства Gen7) и третья версия микроархитектуры Intel HD Graphics, — та, которая использовалась еще в предыдущем семействе CPU — Ivy Bridge, но с некоторыми дополнениями и улучшениями, так что фактически эти GPU относятся к Gen7.5.

    Вообще, начинать знакомство с имени — неоригинально. Но зато очень практично. В таблице ниже, взятой из материалов IDF 2013, приведено соответствие предрелизных обозначений модификаций Intel GPU 2013 с их официальными наименованиями, а также областью применения.


    Младшая модификация GT1 с 10 исполнительными устройствами (EU) называется просто Intel HD Graphics,
    GT2 с 20 EU — это, в зависимости от частоты, Intel HD Graphics 4200/4400/4600.
    Haswell GT3 с 40 EU, способный работать на максимальной частоте 1.1GHz, именуется Intel HD Graphics 5000. Кстати, именно эта модель использована в MacBook Air.
    И, наконец, две топовые версии с 40 EU и частотой 1.3GHz, получили имя собственное Iris, что можно воспринимать или как просто «красивое женское имя» или как «радужку глаза»: Intel Iris graphics 5100 и Intel Iris Pro graphics 5200 (представляющая собой Intel Iris graphics 5100 с интегрированной DRAM).
    Поддерживаемые новым поколением Intel HD Graphics API, а также внутреннее устройство модификаций GT1-GT3 описано в вышеупомянутом посте, так что не буду повторяться, а сразу обращу ваше внимание на GT3e - Intel Iris Pro graphics 5200. Эта модель отличается от остальных наличием 128MB интегрированной памяти — eDRAM. Зачем это нужно?

    Хотя CPU и GPU Intel находятся на одном кристалле, весь обмен данными между ними осуществляется через общую системную память, что конечно же является «узким местом» — причиной проблем с производительностью. Решение — добавление в систему «быстрой памяти», полностью разделяемой между ядрами CPU, графической и медиа подсиистемами GPU. И не просто памяти, а кэш-памяти, которая будет являться в данной системе кэшем 4-ого уровня (L4). Нетрудно догадаться, насколько положительно этот кэш скажется на производительности графических операций, многократно переиспользующих данные, т.е. на текстурировании и сглаживании (anti-aliasing).

    Также хочу обратить ваше внимание на значения тепловой мощности (TDP) для GT3, приведенные в таблице выше — в зависимости от частоты 15W или 28W. Это само по себе удивительно мало, но если еще и заметить, что эти цифры относятся не только к GPU, а ко всей системе CPU и GPU в целом, то они становятся еще фантастичнее. Кстати, TDP Iris Pro graphics 5200 (также в связке с CPU) — 47W.

    И еще — заметим, что графика Iris, да и вообще вся верхняя серия GT3 используется исключительно в ноутбуках и моноблоках (All in One = AIO), в десктопные же CPU любого уровня интегрируются только более скромные модели Intel HD Graphics.

    От железа перейдем к софту. Значительные изменения произошли в драйверах интегрированной графики Intel — они значительно похудели. Ниже приведена пояснительная картинка из серии было-стало (справа, на белом фоне — новая архитектура, слева, на сером — старая):

    Как видите, из драйвера полностью исчез Hardware Abstraction Layer, а его функции частично взяли на себя драйвера пользовательского режима (user mode drivers), которые теперь специально создаются и оптимизируются под каждую конкретную платформу. Но, в целом, драйвера стали делать меньше работы по оптимизации, а значит, производительность теперь в гораздо большей степени зависит от самих приложений!

    Тестов производительности графики Intel 2013 сейчас имеется предостаточно. Самый полный список тестов — игр и бенчмарков графики Intel в сравнении с картами других производителей находится на notebookcheck.net: для Iris Pro, для Iris. Но общий вывод приведу здесь — На системах с Iris Pro graphics 5200 многие современные игры (2013) могут отлично работать на средних или высоких настройках качества при разрешении 1366x768. Для более ранних или менее требовательных к графике игр, таких как Diablo III или Fifa 2013, возможны даже более высокие разрешения или настройки качества. На системах с Intel Iris graphics 5100 современные игры могут свободно работать на низких или средних настройках качества при разрешениях 1024x768 или 1366x768.
    А сравнение моделей Intel HD Graphics «между собой»- Intel HD Graphics 3000/4000/4400/5000, можно найти в статье anandtech

    Здесь же предлагаю внимательно посмотреть на красивый и полезный бенчмарк Unigine Heaven 4.0. Он не только нагружает GPU по полной программе, причем абсолютно реальной игровой нагрузкой (в основе Heaven лежит настоящий игровой движок Unigine), но и позволяет выбирать между тремя API — OpenGL, DirectX9 и DirectX11.


    Для тестов использовалась система с Intel Core i7-4850HQ (Intel Iris Pro graphics 5200), Windows 8.0, последняя на момент написания поста версия драйверов 9.18.10.3257 (15.31.17.64.3257).
    Heaven 4.0 запускался в полноэкранном режиме при разрешении 1920x1200 и средних (middle) настройках качества с остальными параметрами по умолчанию.
    Получившиеся результаты сведены в таблицу ниже:
    API Score FPS FPS min FPS max
    DirectX 11 435 17.3 6.3 31.8
    DirectX 9 445 17.6 6.4 38.4
    OpenGL 415 16.5 6.1 30.0

    То есть, самый высокий результат по очкам показывает DirectX 9, от него на 2% отстает DirectX 11 и на 7% — OpenGL. Отставание, вроде бы, несущественное, но если мы сравним максимально достижимую в тесте частоту кадров, то тут разница становится впечатляющей — по сравнению с DX9, DX11 проигрывает более 20%, а OpenGL — 28%!
    Почему так происходит? Разные драйвера (как сказано выше), разные накладные расходы. Что делать — очевидно — для максимальной производительности при прочих равных выбирать DX9.

    Теперь давайте посмотрим, чем именно вызван такой резкий провал в производительности на некоторых сценах — до всего шести с небольшим кадров в секунду! Вот с максимальной частотой кадров все понятно «на глаз» — она достигается, например, на затемненных сценах или крупных планах, когда значительная часть деталей просто не отрисовывается. Но почему же вдруг среди нормальных, дневных сцен, с тенями, бликами, сглаживанием и производительностью около 25 FPS, например, таких, как на скриншоте ниже, вдруг случается замедление в четыре раза?

    (Нормальный кадр, FPS ~25)


    (Очень медленный кадр, FPS<7)

    Может, во всем виновата трава на переднем плане? Исчерпывающий ответ на этот вопрос дает отличный бесплатный инструмент Intel Graphics Performance Analyzers (GPA).
    Скачав и установив версию для Windows (кстати, есть еще и версия для Android), запускаем GPA Monitor и настраиваем триггер так, чтобы когда частота кадров Heaven опустится ниже 7, произошел автоматический захват данных соответствующего кадра:



    После чего запускаем из GPA Monitor наш бенчмарк и идем заниматься чем-нибудь другим, например, читать habrahabr.
    Минут через пять (или часов через пять — это уж кого как получится) возвращаемся и открываем другой компонент GPA — Frame Analyzer (Анализатор Кадров), где выбираем из предложенного списка захваченных кадров нужный нам и загружаем его (кроме нужного захватывается ряд кадров в начале загрузки бенчмарка — на стадии показа меню, когда FPS низкий просто по дизайну Heaven). В результате получается примерно такая картина (по клику на картинке ниже — полноразмерная версия):


    Верхняя часть рабочей области окна показывает все операции по отрисовке данного кадра в виде эргов (erg) -условных «единиц работы GPU», которыми могут быть как вызовы отрисовки различных объектов, так и очистка буферов и тп. Высота столбиков показывает время, затраченное на каждый эрг.

    Столбец слева показывает буфера отрисовки (Render Targets, RT), использованные при создании данного кадра, и, конечно же, их содержимое. Видно, что в данном кадре задействовано целых 37 RT! Но используются они грамотно с точки зрения производительности, т.е. последовательно, по очереди. Это видно из информации в скобках под каждым RT — номера эргов, их использующих.

    Теперь давайте выберем самый высокий столбик, одиноко возвышающийся в довольно ровном профиле эргов справа, с длительностью, превышающей 10 тысяч микросекунд, и посмотрим чему именно он соответствует.
    После выделения этого эрга, GPA автоматически подсветит соответствующий ему RT, покажет, что именно происходит (в данном случае в эрге #1708 отрисовываются 506 примитива по индексам) а главное, даст возможность посмотреть, какие именно пиксели он отображает. Вот они — на скриншоте ниже (исходный размер по клику на картинку):


    Как видите, это совсем не трава, а дымка (облака?) вдали. Причем, их значительная часть не видна на самом кадре, т.к. загораживается объектами сцены. Поэтому от дымки можно или отказаться вовсе или сильно ее упростить.
    GPA позволяет провести эксперимент — «отключить» выбранные эрги и посмотреть, как будет выглядеть кадр без них. В данном случае кадр оказался настолько похожим на исходный, что я не буду приводить картинку. Зато время, затраченное на изучаемый кадр, сократилось на 15%, что в нашем случае дало рост FPS почти на целый кадр. Так что, если вы хотите поиграть в игру, в настройках которой можно управлять particle effects (а именно таким эффектом и является дымка), то вы понимаете, что нужно делать. Также, примерно понятно, что делать для обеспечения максимальной производительности на Intel GPU разработчикам игр. Но только примерно. Если вам нужны более конкретные и развернутые советы, то их можно прочитать (пока только на английском) в обновленном Руководстве Разработчика под Intel GPU — Graphics Developer's Guide for 4th Generation Intel® Core™ Processor Graphics.
    Intel
    167,50
    Компания
    Поделиться публикацией

    Похожие публикации

    Комментарии 40

      0
      Когда-нибудь и в нашем проекте будет полноценная поддержка видео от Intel.
        +1
        Было бы полезно увидеть сравнение производительности с конкурентами от AMD и Nvidia
          +3
          Так увидьте :) в посте есть прямая ссылка на именно такое сравнение на notebookcheck
            +3
            Я сэкономлю вам немного времени:
            Скрытый текст
            image
            image
              0
              Сомневаюсь, что сэкономите. Это не те тесты, которые интересны для встроенной графики — если взять «тяжелую» игру, высокие настройки и разрешение, то результат очевиден — GPU от дискретных карт сильно отстанет по очевидным причинам.
                +1
                Ваш протест понятен, так как Intel никогда всерьёз не сотрудничала с разработчиками игр и совместимость оставляет желать лучшего. Но это не умаляет того факта, что интеграшки позволяют играть в современные игры с консольными настройками.
            +1
            Есть у меня один проектик где надо декодировать много h264 видео файлов одновременно. Логично воспользоваться для этого аппаратным ускорением. И вот подбирая для него железо, я обнаружил, что никто из производителей не указывает сколько видео потоков одновременно может декодировать железо. Ясно, что это зависит от битрейта самих потоков, но и по количеству потоков должна быть верхняя граница. Для Intel HD4600 в i5 4XXX (не помню сейчас точно) я экспериментально установил, что при 8 потоках видео начинает подтормаживать. Потом в недрах интеловского сайта нашел для HD4600 цифру 12 как количество одновременных потоков видео. Значит если понизить битрейт, то я смогу выжать из него и 12. Правда, не очень понятно — это относится к декодированию или кодированию. У AMD я вообще подобных характеристик не нашел. У текущих чипсетов NVidia что то более менее похожее находится, но цифры не радуют — что то вроде 1 поток для 4К разрешения или 2 для FullHD. Но железо явно может больше — карта 3х летней давности спокойно тянет 6 моих потоков на железе (загрузка CPU 5-7%). Впрочем я все равно выбрал Intel HD4600 из-за компактности. Жалко у нас не доступны «дискретные» системы на Iris (мне не нужен ноутбук, мне нужен ПК в компактном корпусе, желательно в Rack Mount).
              0
              Для меня было шоком, что такая мегавстроенная графика без танцев с бубном не тянет десктоп разрешение выше 1920х1080. Надеюсь, это исправят.
                0
                Сильно выше 1920х1080? У меня (i7, Haswell) тянет 1980x1200 и 1280x1024 одновременно (в играх, конечно, второй монитор приходится отключать). С этими же мониторами работал на другом компе — i5 предыдущего поколения. Так что смею предположить, что проблема лежит не в графике. Или не только в ней.
                (смотрел на Ubuntu 13.04 и Fedora сколько-то-там).
                  0
                  Что то не так у вас. У меня Intel HD2000 тянет 1920х1200 + 1920х1080 одновременно — домашний комп.
                  А HD4600 запускал в нестандартном разрешении 1728х1296 на два канала и еще один 1280х1024.

                    +1
                    Intel HD 4000, великолепно тянет 2560*1440 для системы и софта, игрушки обычно запускаю в 1920*1080, иногда приходится уменьшать.
                      0
                      i7-4770 (т.е. графика HD 4600), два монитора, один из них 2560х1440. У матплаты выходы DVI, HDMI и D-Sub, у монитора вход DVI-D и DisplayPort. Максимально возможное разрешение экрана для DVI у интела — 1920х1080. Может, как-то можно подключить hdmi выход к displayport входу, но развлечения с переходниками и кабелями стоят не намного дешевле нормальной видеокарты.
                        0
                        У меня мак мини, там только HDMI и mini DisplayPort. С первого есть переходник на DVI, но он лишь Single Link (который как раз и тянет лишь 1920*1080). Поэтому пришлось потерпеть, но дождаться доставки качественного (quard-lane) кабеля mini DisplayPort – DisplayPort, он и звук умеет гнать в цифре. Так что не в процессоре дело. Если подключаете по DVI, убедитесь, что все компоненты, особенно кабель – DualLink (см википедию).
                    0
                    Призываю binstream, таки интересно, почему дымка такая тяжелая (правильнее было бы, наверное, Frustum'a, но его нет на Хабре).
                      0
                      Я втайне надеялась, что кто- то из Unigine тут есть, но, конечно же, не знала кто. Теперь, благодаря вам, знаю. Посты писать полезно.
                        0
                        Тут не просто сотрудники Unigine есть, тут есть даже блог компании habrahabr.ru/company/unigine/
                          0
                          Цифры производительности из лаборатории Intel постоянно получаем по нашим бенчмаркам, спасибо за внимание и сотрудничество =)
                          0
                          Объемные облака в Heaven тяжелые, ага — там много слоев и достаточно сложный алгоритм генерации.
                          Это вовсе не обычные партиклы, короче.

                          Ну и вообще смысл Heaven — в аппаратной тесселяции, на фоне загруза от которой все остальное — мелочи. К сожалению, видеодрайвер от Intel пока не очень с ней дружит, но уже почти поддерживает.
                          +1
                          Отставание, вроде бы, несущественное, но если мы сравним максимально достижимую в тесте частоту кадров, то тут разница становится впечатляющей

                          Максимальный локально-достижимый FPS — это, пожалуй, одна из самых бесполезных характеристик 3D теста. Другое дело, если бы там было максимальное время на кадр.
                            0
                            максимальное время на кадр соответствует минимальному fps, так что и такая характеристика там есть.
                            А максимальный fps бесполезен для теста, особенно, если он достигается редко, но полезен для сравнения разных графических библиотек.
                            0
                            … графика Iris, да и вообще вся верхняя серия GT3 используется исключительно в ноутбуках и моноблоках (All in One = AIO), в десктопные же CPU любого уровня интегрируются только более скромные модели Intel HD Graphics


                            А вот это что за зверь? i5-4570R
                              0
                              О, самый внимательный читатель.
                              i5-4570R существует пока только в теории, купить его нельзя. Увы, меня часто разработчики спрашивают именно про десктопные Iris — видео конвертировать как здорово бы. Так что пришлось основательно проверить и увы…
                              0
                              давно назрел вопрос, а интел по поводу него хранит молчание
                              как соотносится:
                              GT2 с 20 EU — это, в зависимости от частоты, Intel HD Graphics 4200/4400/4600.

                              и это:
                              image
                              в вопросе числа исполнительных модулей?
                              если что, то картинка с gpu-z от Core i3-41xx
                                0
                                Вопрос хороший, ответ мне неизвестен
                                Но хотелось бы начать с выяснения механизма, который использует GPU-z для проверки числа EU (shaders)? допускаю, что это может быть и ошибкой со стороны gpu-z (например, она просто «знает», что вся серия 4ххх имеет 16EU, а не делает настоящего запроса).
                                  0
                                  но aida64 того же мнения, что и gpu-z
                                    0
                                    Единственное, что я могу сделать — почитать еще документацию Intel по различным моделям. Если найду там что-нибудь проясняющее дело, обязательно сообщу.
                                    0
                                    4600 — 20 EU (i7 4770)
                                  0
                                  Универсальный совет что партиклы много жрут, отключайте их в первую очередь — не совсем корректен. Они тяжелые конкретно только в этой сцене, и проседание по филлрейту явно. Вообще в первую очередь я бы посоветовал резать всякие там mssa, во вторую — постэффекты, дальше резать тени, и только потом частицы и геометрию.
                                  А так в целом материал полезный и интересный, спасибо. Не приходилось пока еще интеловские gpu тулзы использовать для профайлинга.
                                    0
                                    Отчасти, согласна. Но в данном случае 4xантиалиасинг делает железка, он почти «бесплатен». А вообще — читайте указанный в конце Developers Guide, там много полезного по теме написано.
                                      0
                                      Да как же он может быть бесплатен, если фрагментный шейдер будет выполняться в 4 раза чаще? А у вас между прочим проседаение именно по филлрейту.
                                        0
                                        подумала, согласилась.
                                          0
                                          Позвольте не согласиться и позанудствовать: фрагментный шейдер выполняется в 4 раза чаще только если на этот настаивают разработчики, и это называется super-sampling. На практике же есть много нюансов:

                                          1) геометрия отрисовывается с тем же вызовом фрагментных шейдеров, а вот этапы rasterizer и pixel export уже будут тяжелее
                                          2) post-processing как правило оптимизируют для того, чтобы минимальную работу делать на уровне сэмплов, так что там часть 4х и часть 1х.
                                          3) полностью заполненные пиксели обычно фильтруют и обрабатывают на уровне пикселей, даже если всё остальное на уровне сэмплов, так что часть из 4х снова уходит в 1х
                                          4) естественно, накладные расходы, требования к памяти и шинам данных — всё это выше
                                            0
                                            Ну скажем так, по ссылке что я привел написано что это именно msaa, и там написано:
                                            A pixel shader runs for each 2x2 pixel area to support derivative calculations (which use x and y deltas).

                                            Я все таки подозреваю что оптимизации там есть, а даже если и нет, то «бонусные» фрагментные шейдеры будут выполняться в 99% по кешу, что уже на порядок легче.

                                            3) полностью заполненные пиксели обычно фильтруют и обрабатывают на уровне пикселей, даже если всё остальное на уровне сэмплов, так что часть из 4х снова уходит в 1х
                                            Как я уже привел цитату выше из описания от ms — похоже что не фильтруют, но я подозреваю что зависит от вендора. Ну ладно, для color они может и отфильтруют, а вот для буфера глубины рендер выполняется гарантированно для каждого семпла.

                                            post-processing как правило оптимизируют для того, чтобы минимальную работу делать на уровне сэмплов
                                            пост процессинг поспроцессингу рознь. Если dof может например скрыть лестницы отсутствия семплинга, то hdr — нет. Если используется честный hdr — то там рендер в флоатпоинт текстуру, а это опять же дороже, ибо 4 байта на канал. В общем поспроцесс — это постпроцесс, а антиалиазинг — это антиалиазинг. И то и другое требует немалых затрат, и никак не бесплатен как сказали выше, и часто они являются одной из самых тяжелых операций.
                                              0
                                              A pixel shader runs for each 2x2 pixel area to support derivative calculations (which use x and y deltas).

                                              К MSAA это не имеет отношения — речь идёт не о сэмплах, а о пикселях, и в режиме 2х2 они обрабатываются независимо от MSAA.

                                              Как я уже привел цитату выше из описания от ms — похоже что не фильтруют, но я подозреваю что зависит от вендора.

                                              Фильтрует не драйвер, а движок игры, так что вендор тут не при чём.

                                              Ну ладно, для color они может и отфильтруют, а вот для буфера глубины рендер выполняется гарантированно для каждого семпла.

                                              Вы путаете выполнение фрагментного шейдера с фиксированными блоками (растеризатор, интерполяторы, depth/stencil test). Последние будут работать на частоте сэмплов, что не мешает тяжёлому шейдеру отработать раз на пиксел.

                                              пост процессинг поспроцессингу рознь. Если dof может например скрыть лестницы отсутствия семплинга, то hdr — нет.

                                              Я о том и говорю, что разработчики стараются как можно меньше пост-процессинга делать на частоте сэмплов.

                                              Я лишь опровергаю утверждение «фрагментный шейдер будет выполняться в 4 раза чаще», но пытаюсь показать, что MSAA почти бесплатен. А Вы спорите зря: я на этом собаку сьел, а может и две ;)
                                                0
                                                Ах, да, прошу прощения, не фрагментный выполняется 4 раза (выполняется 1 раз всегда), а 4 раза происходит запись. И по факту пишется 4 семпла:
                                                For a triangle, a coverage test is performed for each sample location (not for a pixel center). If more than one sample location is covered, a pixel shader runs once with attributes interpolated at the pixel center. The result is stored (replicated) for each covered sample location in the pixel that passes the depth/stencil test.
                                                A line is treated as a rectangle made up of two triangles, with a line width of 1.4.


                                                Вы путаете выполнение фрагментного шейдера с фиксированными блоками
                                                Не путаю, просто память подвела. Перечитал топик от ms внимательнее. :)

                                                Но вот с тем что MSAA почти бесплатен я согласиться не могу. Можно попросить автора темы провести еще одно измерение для скажем того же DirectX9 но с отключенным MSAA, я ожидаю прирост производительности процентов на 40.
                                                  0
                                                  Хаха, очепятка. Я НЕ пытаюсь показать, что MSAA почти бесплатен, конечно :) Бывает же…
                                                    0
                                                    А, ну тогда мы друг друга правильно поняли. Спасибо, что заставили меня освежить в памяти особенности мультисемплового растеризатора.
                                          0
                                          Хотел почитать, у вас там ссылка на Intel Processor Graphics Developer's Guide for 4th Generation Intel® Core™ Processor Graphics битая. Page not found кажет.
                                            0
                                            Спасибо огромное, скажу нужным людям, поправят
                                              0
                                              ссылку починили, читайте на здоровье.

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                        Самое читаемое