Russian Chinese (Simplified) English French German Ukrainian

Вулкан


найти
A- A A+

GeForce 8800 GTX

38521

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

321851

 

NVIDIA GeForce 8800 можно по праву считать революционной платформой того дня. Подобное эпохальное явление действительно бывало не каждый год, и по значимости его можно сравнить разве что с выходом архитектурой Intel Core, да с выходом в свет операционной платформы Microsoft Windows Vista.

Архитектура NVIDIA GeForce 8800 

321861

Приступая к разработке нового поколения 3D архитектуры далёким летом 2002 года, перед инженерами NVIDIA был поставлен ряд ключевых требований. Помимо классической задачи разработки более производительного GPU с улучшенным качеством изображения, также был взят прицел на возможность обработки физических эффектов и интенсивных вычислений с плавающей запятой. В то же время, в содружестве с Microsoft, была поставлена цель придания новых качеств конвейерам GPU при работе с потоками и геометрией, определение ключевых функций нового поколения Direct X (для Windows Vista - DirectX 10), разумеется, с учётом достижения максимальной производительности при работе с приложениями, использующими прежние OpenGL, DirectX 9 и ранние версии DirectX.

Конечным итогом разработки архитектуры GeForce 8800 стал выпуск двух чипов - high-end решения GeForce 8800 GTX и более "скромного" варианта GeForce 8800 GTS. Первыми представителями новой архитектуры 3D графики NVIDIA GeForce 8800, которые появится на прилавках магазинов, станут видеокарты на чипе NVIDIA GeForce 8800 GTX, поэтому сегодня рассказ будет вестись, в основном, вокруг их особенностей. Чипы GeForce 8800 GTX являются действительно первыми в индустрии DirectX 10 совместимыми решениями, обладающими поддержкой Extreme High Definition (XHD) разрешения экрана с высокой производительностью при наиболее "тяжёлых" максимальных режимах работы.

Обязательно стоит отметить интересный факт: анонс архитектуры NVIDIA GeForce 8800 практически совпадает с новой рыночной стратегией компании NVIDIA, которая теперь переходит на продвижение платформенных решений. Это совсем не означает, что новая графика не будет работать с чипсетами других компаний, однако максимальные результаты NVIDIA обещает именно в результате использования платформ на базе видеокарт GeForce 8800 GTX, в том числе, в конфигурации SLI, и новых high-end чипсетов серии nForce 600 SLI. Одновременно с графикой GeForce 8800 компания NVIDIA анонсировала чипсет nForce 680i SLI для платформы Intel, но нет сомнений, что со временем подобные решения будут представлены и для работы с процессорами AMD.

Пожалуй, самое сильное впечатление от новой архитектуры – это унифицированная сущность её конвейеров. Все теоретические споры о возможности или невозможности реализации дизайна унифицированных конвейеров в обозримом будущем заканчиваются сегодня, ибо решения семейства GeForce 8800 обладают мощной параллельной архитектурой унифицированных шейдеров и состоит из 128 обособленных, совершенно самостоятельных потоковых процессоров с тактовой частотой до 1,35 ГГц. Каждый конвейер-процессор, в свою очередь, способен динамически переназначаться для обработки вершинных, пиксельных, геометрических или физических операций, обеспечивая таким образом пиковую загрузку ресурсов GPU и максимальную сбалансированную гибкость при обработке шейдерных задач.

322231

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

322191

Для более понятного объяснения сути архитектуры унифицированных конвейеров, для начала вспомним принцип работы классической модели конвейера, задействованного на обработку потока шейдерных данных с рядом атрибутов, индексов, команд и текстур, направляемых центральным процессором в графический чип. Основные этапы обработки – вершинные и пиксельные шейдеры, растрирование и финальная запись пикселей во фреймовый буфер, производится в однообразной линейной последовательности, при этом у чипов класса GeForce 7 на каждой основной этап обработки задействуется множество физических конвейеров – до 200 последовательных стадий конвейера на каждый этап обработки пиксельного шейдера.

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

322201

Предполагается, что заложенное в архитектуру GeForce 8800 количество аппаратных шейдерных модулей будет особенно востребовано при работе с 3D играми DirectX 10. Нет, унифицированная шейдерная архитектура совсем не является обязательным условием работы с унифицированным набором инструкций DirectX 10, однако разработчики NVIDIA GeForce 8800 полагают, что такая архитектура окажется более удачной при сбалансированном распределении нагрузки, для эффективной загрузки чипа при работе под DirectX 10. Разумеется, унифицированная шейдерная архитектура GeForce 8800 также эффективна при работе с OpenGL и DirectX 9 и ранее, поскольку не заложено никаких ограничений или фиксированного числа унифицированных шейдеров для обработки пиксельных и вершинных шейдеров с любой моделью API.

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

322101

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

322111

Унифицированные потоковые процессоры (Unified Streaming Processors, SP) ядра чипа GeForce 8800, представляющие собой процессоры общего назначения для обработки данных с плавающей запятой, могут обрабатывать геометрические, вертексные, пиксельные шейдеры, физические эффекты – без разницы.

Архитектура унифицированных потоковых процессоров (SP)

Итак, вековая мечта всех времён и народов – гибкое распараллеливание обработки шейдерных операций, решена в архитектуре GeForce 8800 с помощью множества скалярных потоковых процессоров, обрабатывающих входящие потоки данных и генерирующие выходящие потоки, которые в свою очередь, могут быть использованы для дальнейшей обработки другими SP. Объединяясь в группы, такие процессорные движки способны обеспечить впечатляющую параллельную вычислительную мощь.

Иллюстрация ниже наглядно показывает сбалансированный дизайн архитектуры GeForce 8800, где блок потоковых процессоров SP объединён с блоками кэша, фильтрации текстур (Texture Filtering, TF) и адресации текстур (Texture Addressing, TA). Представьте себе 128 таких вот универсальных потоковых процессорных конвейера, объединённых в "подмножества" – именно столько их в чипе GeForce 8800 GTX.

 

322241

Почему именно скалярная архитектура? На ранних стадиях разработки архитектуры GeForce 8800, инженеры NVIDIA проанализировали сотни шейдерных программ и пришли к выводу, что традиционная векторная архитектура менее эффективно использует вычислительные ресурсы, нежели скалярный дизайн процессорных модулей, особенно в случае обработки сложных смешанных шейдеров, сочетающих векторные и скалярные инструкции. Тем более, что достаточно сложно добиться эффективной обработки и компиляции скалярных вычислений с помощью векторных конвейеров. Несмотря на тот факт, что до сих пор в большинстве современных графических процессоров использовались преимущественно векторные исполнительные модули – по причине преобладающего количества графических операций с векторными данными (такие как компонентная R-G-B-A обработка в пиксельных шейдерах или геометрическое преобразование 4x4 матриц в вертексных шейдерах), скалярные операции можно назвать также вполне типичным случаем.

Традиционные векторные графические чипы - как от NVIDIA, так и от ATI, обладают аппаратной реализацией шейдеров с поддержкой двойного исполнения инструкций. Так, современные чипы ATI с дизайном "3+1" допускают исполнение единой 4-элементной векторной инструкции или парной операции из трёхэлементной векторной инструкции и скалярной инструкции. Чипы серий NVIDIA GeForce 6x и GeForce 7x поддерживают парное исполнение инструкций вида 3+1 и 2+2, но им также далеко до эффективности архитектуры GeForce 8800, которая позволяет загружать скалярными инструкциями скалярные модули чипа со 100% эффективностью. Отметим, что векторный шейдерный программный код преобразуется в скалярные операции непосредственно чипом GeForce 8800. Таким образом, с помощью скалярной архитектуры на базе 128 скалярных вычислительных модулей теоретически можно добиться 2-кратного увеличения производительности против системы из 32 4-компонентных векторных процессорных модулей.

Модуль Lumenex – высококачественный антиалиазинг, HDR и анизотропная фильтрация

Модуль NVIDIA Lumenex, реализованный в чипах серии GeForce 8800, выводит на новый уровень технологии высококачественного антиалиазинга (AA) и анизотропной фильтрации (AF). Благодаря использованию как зональных (coverage), так и геометрических сэмплов, новая антиалиазинговая технология получила название Coverage Sampling Antialiasing (CSAA) при этом обеспечивается поддержка четырёх новых режимов мультисэмплированного антиалиазинга CSAA для видеокарт на одном GPU - 8x, 8xQ, 16x и 16xQ.

Каждый из новых режимов AA активизируется из панели управления драйвера NVIDIA, при этом необходимо выбрать опцию с названием Enhance the Application Setting. Первоначально для инициализации работы новых режимов А потребуется активизировать любой уровень АА в настройках игры, чтобы приложение правильно распределило и установило настройки поверхностей АА рендеринга. В случае, если игра не поддерживает АА, пользователь может установить в контрольной панели драйвера NVIDIA режим Override Any Applications Setting. Срабатывает, правда не в каждом случае.

321871

Во многих игрушках новый режим 16x обеспечит частоту обновления кадра, сравнимую со стандартным 4x режимом мультисэмплирования, однако со значительно более высоким качеством картинки. Ниже – пример работы режима CSAA 16x по сравнению со стандартным 4X AA мультисэмплированием.

Чипы серии GeForce 8800 поддерживают процесс HDR (High Dynamic Range) рендеринга с 128-битной точностью, не только в режиме FP16 (64-битный цвет), но и FP32 (128-битный цвет), которые могут обрабатываться одновременно с процессом мультисэмплированного антиалиазинга. Это позволяет добиться реалистичных эффектов освещения и наложения теней, при этом обеспечивается высокая динамика и детализация самых затемнённых и самых светлых объектов. Представленный ниже скриншот лица новой виртуальной топ-модели NVIDIA – Адриенн Карри (Adrienne Curry), является отличной иллюстрацией уровня реализма, достигаемых при работе движка NVIDIA Lumenex в чипах GeForce 8800.

На иллюстрации ниже приведён пример работы анизотропной фильтрации (Anisotropic Filtering, AF), позволяющей добиться большей чёткости и резкости различных объектов, расположенных под острым углом и/или уходящих в перспективу. В комбинации с технологией множественного трилинейного текстурирования (с изменяющимся по мере удаления разрешением, trilinear mipmapping) анизотропная фильтрация позволяет снизить масштаб искажений и сделать картинку значительно чётче. На иллюстрации ниже: слева – изотропное множественное трилинейное текстурирование (Isotropic Trilinear MipMapping), справа – анизотропное множественное трилинейное текстурирование (Anisotropic Trilinear MipMapping).

322131

Следует помнить, что анизотропная фильтрация весьма чувствительна к пропускной способности шины памяти, особенно на высоких уровнях AF. К примеру, режим 16xAF означает 16 билинейных считываний на каждый из двух смежных уровней множественного текстурирования (в сумме 128 обращений к памяти), усложнённых получением финальной попиксельной цветовой текстуры. Решения на базе чипов GeForce 8800 получили новую опцию в панели управления AF, названную Angular LOD Control и имеющую два режима - Quality и High Quality. На снимке ниже: AF у GeForce 7 (слева) против GeForce 8 с Angular LOD Texture Filtering в режиме High Quality (справа).

322141

 Технология NVIDIA Quantum Effects - физические эффекты

Новая технология NVIDIA Quantum Effects позволяет имитировать и рендерить множество новых физических эффектов с помощью нового поколения GeForce 8800.

321881

Стрим-процессоры GeForce 8800 GTX в количестве 128 обеспечивают достаточный уровень мощности вычислений с плавающей запятой для достижения ряда новых реалистичных эффектов в играх, вроде дымки, огня, взрывов; реалистичной имитации движущихся волос, меха, воды. Разумеется, самые интересные игровые эффекты с эмуляцией физических явлений можно будет наблюдать после выхода DirectX 10 игр.

PureVideo и PureVideo HD

Технология NVIDIA PureVideo HD, хорошо известная в исполнении для всех современных видеокарт NVIDIA, также интегрирована в чипы GeForce 8800 и позволяет обеспечить высокое качество и плавное воспроизведение HD Video контента с носителей HD DVD и Blu-ray, при минимальном использовании ресурсов центрального процессора. Технология PureVideo HD является комплексным программно-аппаратным решением с поддержкой HDV форматов H.264, VC-1, WMV/WMV-HD и MPEG-2 HD. Помимо этого чипы GeForce 8800 поддерживают технологию PureVideo для работы со стандартными форматами WMV и MPEG-2. Защищённый AACS контент с носителей Blu-ray или HD DVD может воспроизводиться системами на базе GeForce 8800 с использованием AACS-совместимых плееров вроде CyberLink, InterVideo и Nero. Все карты GeForce 8800 обладают поддержкой системы защиты HDCP для дисков Blu-ray Disc и HD DVD, позволяя воспроизводить защищённое видео на ПК при использовании HDCP-совместимых дисплеев.

Поддержка Extreme High Definition Gaming

Все карты GeForce 8800 поддерживают игровые установки Extreme High Definition (XHD), при этом игры могут запускаться в широкоформатных режимах вплоть до 2560x1600 – это в семь раз превышает качество картинки HD телевизора 1080i и в два раза - HD формата 1080p. К этому стоит добавить, что двойной DVI интерфейс карты GeForce 8800 GTX позволяет обеспечить игровое качество XHD с разрешением 2560x1600 и высокими FPS.

Несвязанный обсчёт шейдеров, ветвление и Early-Z

На адресацию текстур, выборку и фильтрацию уходит определённое количество тактов GPU, и в случае необходимости выборки и фильтрации текстуры до выполнения следующей операции обсчёта в определённом шейдере, латентность этого процесса (например, в случае 16x AF) могут значительно замедлить работу GPU. В архитектуре GeForce 8800 предусмотрен щадящий режим работы и механизм "скрытия" латентности текстурной выборки с помощью одновременного исполнения ряда независимых математических операций. Если в пиксельном конвейере GeForce 7 обсчёт адреса текстуры перемежается с математическими FP шейдерными операциями, в модуле Shader Unit 1, то несвязанная независимая работа в шейдерными и текстурными операциями в GeForce 8800 снимает эту проблему.

 

322261

Ещё один немаловажный аспект, от которого напрямую зависит общая производительность графической системы, особенно при обработке комплексных DX10 шейдеров – эффективность процесса ветвления. В отличие от чипов серии GeForce 7, "заточенных" на обработку типичных DirectX 9 шейдеров, артитектура GeForce 8800 разработана для обработки комплексных DX10 шейдеров, при этом производится ветвление 16 пикселей (тредов), в некоторых случаях – до 32 пикселей.

Что касается функционирования Z-буфера, в чипах GeForce 8800 GTX сортировка пикселей производится со скоростью, в четыре раза превосходящей этот процесс у GeForce 7900 GTX, поэтому GPU имеет возможность обрабатывать все сложные ситуации на уровне каждого пикселя. Z-сравнения данных о каждом пикселе производятся в модуле растеризатора - ROP (raster operations). Для увеличения производительности чипы GeForce 8800 поддерживают технологию Early-Z, позволяющую определить Z-значения пикселей до того как они поступают на конвейер пиксельного шейдера, благодаря этому увеличивается производительность и не производится ряд заведомо ненужных операций. Пример работы Early-Z показан на рисунках ниже.

 

322271

 

GeForce 8800 GTX: дизайн и производительность

Мы вновь возвращаемся к общей блок-схеме GeForce 8800 GTX, где рассмотрим модуль хост-интерфейса, состоящий из буферов приёма команд, вертексных данных и текстур, пересылаемых для обработки GPU с центрального процессора посредством графического драйвера. Следующий модуль – вводный блок ассемблера, собирающий вертексные данные из буферов и конвертирующий их в формат FP32, параллельно генерируя ряд идентификаторов для разметки повторяющихся операций с вертексами и примитивами.

322291

Чип GeForce 8800 GTX включает в себя 128 потоковых процессоров (или просто стрим-процессоров, stream processor, SP), каждый из которых назначается для обработки любой специфической шейдерной операции, при этом данные на выходе SP могут быть перенаправлены на ввод другого стрим-процессора.

Как уже было сказано в начале, каждый потоковый процессор чипа GeForce 8800 GTX работает на тактовой частоте 1,35 ГГц и поддерживает сдвоенную обработку скалярных операций MAD и MUL, что в сумме даёт вчерне производительность порядка 520 гигафлопс (млрд. FP операций в секунду). На деле, это ещё не производительность в чистом виде, поскольку 100% эффективность подразумевается только при работе только со скалярными шейдерами. Тем не менее процесс обработки смешанного скалярного и векторного кода при использовании GeForce 8800 GTX имеет преимущества перед GPU с векторными аппаратными шейдерами, всё из-за выше упомянутых ограничений обработки данных (3+1, 2+2 и пр.). Модули текстурной фильтрации, совершенно не привязанные к потоковым процессорам и работающие на частоте ядра графического процессора (575 МГц для GeForce 8800 GTX), способны обработать до 64 пикселей текстур за такт (против 24 у GeForce 7900 GTX), 32 пикселя текстурной адресации за такт, 32 пикселя 2X анизотропной фильтрации за такт и 32 пикселя при билинейной фильтрации за такт.

 

322301

Билинейная текстурная FP16 фильтрация с помощью GeForce 8800 выполняется со скоростью 32 пикселя за такт (почти в 5 раз быстрее чем GeForce 7x), анизотропная FP16 2:1 фильтрация - 16 пикселей за такт. С учётом тактовой частоты ядра 575 МГц путём несложных подсчётов можно выяснить, что суммарная производительность при обсчёте билинейно фильтрованных и 2:1 билинейно анизотропно-фильтрованных текселов составит 575 МГц x 32 = 18,4 млрд. текселов в секунду.

Чип GeForce 8800 GTX обладает шестью разделами растровой обработки (Raster Operation, ROP), и каждый раздел в состоянии отрабатывать 4 пикселя (16 суб-пиксельных сэмплов) с общей производительностью до 24 пикселей за такт с обработкой цвета и Z-обработкой. Если выполняется только Z-обработка с применением новой технологии, получается производительность до 192 сэмплов за такт (сэмпл на пиксель) или 48 пикселей за такт (4x мультисэмплированный антиалиазинг).

Подсистема ROP чипов GeForce 8800 поддерживает мультисэмплированный, суперсэмплированный и прозрачный адаптивный антиалиазинг, при этом новые режимы антиагиазинга - 8x, 8xQ, 16x и 16xQ, обеспечивают лучшее качество для современных одночиповых GPU.

Подсистема ROP также поддерживает смешение кадра буфера с FP16 и FP32 рендерингом. Может исполняться одновременный рендеринг до восьми текстур (MRT, Multiple Render Targets), каждый MRT может быть выполнен в разных цветовых форматах, и функция эта также поддерживается в DX10.

Ключевой момент – контроллер памяти. Чипы GeForce 8800 GTX обладают шестью подразделами контроллера памяти, каждый из которых имеет 64-битный интерфейс, что в сумме даёт 384-битную ширину комбинированной интерфейсной шины памяти. Таким образом получается 768 Мб скоростной памяти, при этом поддерживается память стандартов DDR1, DDR2, DDR3, GDDR3 и GDDR4. Видеокарты GeForce 8800 GTX оснащены памятью GDDR3 с тактовой частотой по умолчанию 900 МГц (1800 МГц DDR), что при 384-битной ширине интерфейса даёт пропускную способность до 86,4 Гб/с.

В рамках этой статьи мы не будем останавливаться ни на рассмотрении спецификаций DirectX 10 Shader Model 4, ни на её отличиях от DirectX 9 Shader Model 3, этому будет посвящён один из отдельных материалов нашего сайта, и, скорее всего, не один. Сегодня же необходимо отметить, что унифицированная шейдерная архитектура GeForce 8800 полностью совместима с DirectX 10, плюс обеспечивает отличные результаты в современных DirectX 9 и OpenGL играх. О ключевых DirectX 10 технологиях, реализованных в GeForce 8800, сегодня вкратце.

322311

 Характеристики NVIDIA GeForce 8800 GTX

Наименование GeForce 8800 GTX
Ядро G80
Техпроцесс (мкм) 0.09
Транзисторов (млн) 681
Частота работы ядра 575
Частота работы памяти (DDR) 900 (1800)
Шина и тип памяти GDDR3 384 Bit
ПСП (Гб/с) 86,4
Унифицированные шейдерные блоки 128
Частота унифицированных шейдерных блоков 1350
TMU на конвейер 32 (всего)
ROP 24
Текстур за такт 32
Текстур за проход 32
Shaders Model 4.0
Fill Rate (Mpix/s) 13800
Fill Rate (Mtex/s) 18400
DirectX 10,0
Anti-Aliasing (Max) SS & MS - 16x
Анизотропная фильтрация (Max) 16x
Объем памяти 768
Интерфейс PCI-E
RAMDAC 2x400

 Потоковый вывод данных (Stream Output), реализованный в GeForce 8800, является важной функцией DirectX 10. Такая организация архитектуры позволяет отправлять данные, генерируемые геометрическими (или вертексными) шейдерами в буферы памяти и затем возвращать их и загружать в начало конвейера GPU для последующей обработки.

Кстати, неоднократно упомянутые выше DirectX 10 геометрические шейдеры, поддерживаемые аппаратно в GeForce 8800, в конченом счёте предназначены для повышения качества анимации и реализма выражения лиц, имитации разливных физических процессов и множества других геометрических операций.

32

В целом, чипы серии GeForce 8800 в связке с DX10 API обладают широкими возможностями по обработке игровых объектов в пакетном режиме, а также созданию массовых сцен путём отрисовки большого количества динамических объектов при помощи одного вызова драйвера - Geometry Instancing.

В качестве превосходного примера новых DirectX 10 возможностей семейства графических чипов GeForce 8800 можно привести принцип, по которому теперь создаются и анимируются реалистичные волосы. Рендеринг "натуральных" волос в случае DirectX 9 возлагался, главным образом, на CPU, интерполяция и тесселяция контрольных точек физической модели также возлагалась на центральный процессор. В случае использования DirectX 10 физическое моделирование волос возлагается на графический процессор, при этом интерполяция и тесселяция контрольных точек возлагается на геометрический шейдер.

3223

 На самом деле, новый 3D-ускоритель GeForce 8800GTX стал не только новой эрой в области обработки трёхмерной графики, это и новой планка для остальных комплектующих современного ПК. Всё дело в том, что производительность ускорителей 3D-графики с каждым годом всё сильнее обгоняет производительность центральных процессоров, и это не может не отражаться на всей производительности в целом. Любому мощному 3D-ускорителю нужен мощный центральный процессор, а в случае с GeForce 8800GTX производительность центрального процессора должна была быть не меньше, чем у самого топового процессора на тот день - Intel QX6700, да и его могло с лёгкостью не хватить для обеспечения данными столь мощной видеоподсистемы.

Видеокарта GeForce 8800GTX абсолютно по праву могла называться самой производительной одиночной видеокартой в мире на тот день. В большинстве тестовых приложений она одерживаала убедительную победу над прямым конкурентом от ATi и на долгое время осталвалась самым топовым решением для энтузиастов.

 

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

Google Перепроверить настройки