Аппаратная реализация технологии NVIDIA Optimus
Блог Добряка SEO, дорвеи, сателлиты, СДЛ и т.д. и т.п.
Дата публикации:

Аппаратная реализация технологии NVIDIA Optimus

63099537

Взглянем подробнее на то, как технология реализована с аппаратной точки зрения.

Вот как дело обстояло до ее внедрения:

В системе устанавливалось два независимых видеоадаптера. При переключении с одного адаптера на другой система фактически останавливалась, и отключающийся адаптер начинал сдавать дела — освобождал свою память. Далее он отключался и включался новый (отсюда мигание экрана) и еще некоторое время система приходила в себя — новый адаптер устанавливал взаимодействие с системой. При этом схема взаимодействия Intel — NVIDIA такова, что не всегда данные можно безболезненно перекинуть с одного адаптера на другой — как минимум, не совпадают архитектуры. Cоответственно, при использовании трехмерных приложений или приложений, использующих оверлей (возможно, и других типов — тут я не уверен) переключить графику невозможно, их придется закрыть. Помимо этого, в системе приходилось ставить дополнительный чип — мультиплексор (на схеме назван Muxes), который перенаправляет данные с выбранной видеокарты на устройство вывода изображения.Такой мультиплексор должен быть для каждого устройства вывода (внутренний монитор, внешний монитор и т. д.).

Еще один аспект — ранее система допускала наличие только одного видеодрайвера в системе, соответственно, приходилось делать еще и программные нашлепки, которые бы позволяли запускать разные драйвера для встроенной и интегрированной графики), но сейчас эта проблема решена на уровне ОС.

Как видите, на схеме указан Display Driver Interposer. Это программа, которая управляет переключением графического чипа в системе, делая видимым для ОС тот или иной драйвер. Соответственно, для работы необходим этот уровень плюс программный слой между интерпозером и вторым чипом, ну и надо договориться с производителем. Кстати, если я правильно понял, Windows 7 допускает наличие в системе двух активных видеоадаптеров с разными драйверами, так что эта проблема более-менее разрешена с помощью Microsoft.

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

В том числе и на этом основана новая схема взаимодействия. Чип NVIDIA теперь подключается не параллельно и независимо, а включается в общую работу с IGP через шину PCI Express. Разводка платы в этом случае проще, отпала нужда в мультиплексорах, а внешний чип подключается через общую шину. Однако у системы появилось много других особенностей, о которых поговорим ниже. Посмотрим, как работает платформа, в которой реализован Optimus.

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

При запуске приложения, требующего внешнюю видеокарту, этот чип включается.

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

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

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

Для решения этой проблемы компания разработала технологию Optimus Copy Engine.

Это самостоятельный механизм копирования, который занимается исключительно тем, что выводит данные в системную память, не отвлекая на это ресурсы основного чипа. Таким образом, технически Copy engine представляет собой отдельный (это важно) механизм, который забирает из локальной памяти адаптера NVIDIA сформированный кадр и отправляет его в оперативную память, откуда его должен забрать интегрированный контроллер и вывести на экран. Остается вопрос — а какие будут накладные расходы?