Форум программистов, компьютерный форум, киберфорум
Видеокарты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/54: Рейтинг темы: голосов - 54, средняя оценка - 4.65
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
1

Принцип работы видеокарты

12.01.2014, 18:51. Показов 10016. Ответов 54
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Цитата Сообщение от dimank666 Посмотреть сообщение
треугольники рассчитывает видеокарта а не процессор вот в чем вы быле немного не праввы
Я считаю, что все поверхности в видеокартах задаются сетками. Для начала нам нужно задать сетку поверхности в виде, грубо говоря, набора ее вершин (каждая вершина задается тройкой декартовых координат). Формированием этой сетки занимается центральный процессор, а не видеокарта, т. к. видеокарта не может знать, какая поверхность нам нужна, это ведь, по сути дела, для нее исходные данные. После того как центральный процессор сформировал сетку, он по специальному протоколу в виде сообщения специального формата должен передать ее видеокарте. Видеокарта принимает эту сетку, запоминает в своей памяти, приписывает ей какой-то дескриптор (номер, descriptor, handler и т. п.) и начинает отрисовку соответствующей ей поверхности. В отрисовке процессор уже никакого участия не принимает.

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

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

После того как поверхности построены и "раскрашены" (пока еще виртуально, не будучи отображены на экране), их нужно спроецировать на плоскость. Тут можно применить и параллельную проекцию (как раз хорошо для CAD'ов), и перспективу (лучше пойдет для игр). Результат проекции это и есть готовый кадр изображения, который можно вывести на экран монитора.

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

Еще один важный момент.
Насколько я понимаю, видеокарта умеет не только превращать сетку в поверхность, но и перемещать изначальную сетку в пространстве. Т. е. достаточно сетку рассчитать и ввести в видеокарту всего один раз, а дальше специальными командами можно выполнять ее параллельный сдвиг (по идее, он должен задаваться тройкой декартовых координат) и вращение (чем оно задается, не знаю, возможно углами Эйлера). Т. е. простейшие геометрические движения видеокарта также способна выполнять. Может ли она моделировать деформации поверхностей - не знаю.

Вот как я в принципе представляю себе работу ЦП и видеокарты в процессе рисования картинки поверхности. Т. е. ЦП от и до формирует сетку (задает все ее вершины), видеокарта в этом НИКАКОГО участия не принимает, ЦП отсылает видеокарте эту сетку вместе с координатами ее начального положения, а дальше видеокарта уже сама безо всякого участия процессора строит на основе этой сетки поверхность (используя сплайны), раскрашивает ее в нужные цвета, строит плоскую проекцию сцены и выводит в кадр. Также видеокарта способна двигать поверхность в пространстве: сдвигать ее и вращать. Роль ЦП здесь заключается только в формировании и выдаче соответствующей команды (она очень проста), весь перерасчет геометрии ведет в данном случае исключительно видеокарта.

У меня в чем-то ошибочные, ложные представления о работе видеокарты? Что-то я неправильно себе представляю? Если да, поправьте, с удовольствием выслушаю.

Да, по поводу треугольников.
треугольники рассчитывает видеокарта а не процессор вот в чем вы быле немного не праввы
А что, в качестве исходных сеток используются многогранники с треугольными гранями? Т. е. поверхности задаются триангуляцией? Или я тебе неправильно не понял и число сторон в гранях необязательно равно трем?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2014, 18:51
Ответы с готовыми решениями:

Подскажите принцип работы
Ребята, я не знаю,что писать в поиске при таком вопросе. Собственно вопрос: я часто играю в игры,...

Видеокарты от MSI и режимы работы
Объясните пожалуйста или расскажите, как работают эти 3 режима. Частота разгона / Базовая частота...

Снижение частоты работы видеокарты R9 280 после разгона
Доброго время суток, пользователи форума. Решил рассказать о странном поведении своей персоналки...

Высокая температура видеокарты после 10 минут работы компьютера
После обновления системы(до обновы все было нормально) температура видеокарты после 10 минут работы...

54
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,859
Записей в блоге: 5
17.01.2014, 17:59 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от JohnyWalker Посмотреть сообщение
3. Ядро GPU не имеет ни специальных встроенных форматов данных для представления графических объектов (треугольников, составленных из них многогранников и т. п.), ни машинных инструкций для манипуляций с этими объектами. Все эти объекты и алгоритмы для управления ими реализованы чисто программным путем.
Думаю, всё-таки есть специальные форматы данных. Это вектора. Именно через них выполняется львиная доля всех графических вычислений на GPU(которые потом приспособили не только для графики). Логично предположить что для этого типа данных есть свои аппаратно-ускоренные инструкции.
На заре появления шейдеров (программ для GPU) программисты могли пользоваться только сильно ограниченным набором низкоуровневых инструкций( подобие ассемблера только для видеокарт ). Естественно, у каждого вендора(ATI/nVidia) были свои уникальные наборы инструкций, что негативно сказывалось на популярности таких программ. Лет 10 назад(а точнее в 2002 году) в OpenGL появилось расширение, которое стандартизовало эти инструкции. Так появился первый кроссплатформенный( не зависящий от вендора GPU ) низкоуровневый язык для видеокарт
http://en.wikipedia.org/wiki/ARB_assembly_language
2
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
17.01.2014, 19:57 42
Цитата Сообщение от JohnyWalker Посмотреть сообщение
1. Ядро GPU - это небольшой процессор, способный выполнять некоторый универсальный набор машинных инструкций общего назначения, типичный для подавляющего большинства процессорных архитектур. Этот набор дополнен инструкциями для вычисления некоторых элементарных математических функций (тригонометрические функции, возведение в степень, корни, логарифмы, экспонента), в остальном он ничем принципиально не отличается от наборов инструкций, реализованных в процессорах общего назначения.
согласен с этим

Добавлено через 10 минут
Цитата Сообщение от JohnyWalker Посмотреть сообщение
2. Это ядро очень сильно ориентировано на параллельную обработку данных, что сказывается на его внутреннем устройстве. Оно содержит в своем составе одно устройство управления и несколько одинаковых исполнительных устройств. Во время исполнения машинной инструкции устройство управления синхронно посылает всем исполнительным устройствам одинаковый сигнал (назовем его микрокомандой), в результате чего каждое исполнительное устройство выполняет одно и то же арифметическое действие над своим набором данных. Этот параллелизм реализован с очень существенными отличиями в GPU Nvidia и Radeon (SIMD, векторные ядра, формат машинных инструкций vliw), деталей реализации я себе практически не представляю. Этот параллелизм также сильно сказывается на формате машинных инструкций, хотя сами по себе эти инструкции, повторюсь, ничем не примечательны и практически полностью повторяют инструкции обычных CPU с последовательной моделью обработки данных.
это я вообще не понимаю ты к чему?
Если к теме про видеокарты то согласен, но если относительно нашего спора имеются ли технические отличия в строении CPU и GPU?

Добавлено через 2 минуты
Цитата Сообщение от JohnyWalker Посмотреть сообщение
3. Ядро GPU не имеет ни специальных встроенных форматов данных для представления графических объектов (треугольников, составленных из них многогранников и т. п.), ни машинных инструкций для манипуляций с этими объектами. Все эти объекты и алгоритмы для управления ими реализованы чисто программным путем.
опят ты перешёл к программному обеспечению
хорошо с этим я согласен тоже.
0
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
17.01.2014, 20:41  [ТС] 43
snake32. Пара вопросов к Вам.

Цитата Сообщение от snake32 Посмотреть сообщение
Думаю, всё-таки есть специальные форматы данных. Это вектора. Именно через них выполняется львиная доля всех графических вычислений на GPU (которые потом приспособили не только для графики). Логично предположить что для этого типа данных есть свои аппаратно-ускоренные инструкции.
А что Вы понимаете под словом "вектор"? Просто этот термин может иметь разные значения. Он может обозначать
1. Просто массив однородных числовых данных, над которыми процессор за одну инструкцию синхронно выполняет одну и ту же арифметическую операцию. В этом случае это просто один из способов распараллелить вычисления и таким способом их ускорить. Про этот подход я уже писал выше. Он, кстати говоря, реализован даже в технологии MMX от Intel. Там есть 64-ёхразрядный массив, его мы можем рассматривать как набор из 8-ми "упакованных" байт (вектор из 8-ми однобайтовых компонент), как набор из 4-ех 16-тибитных слов (тогда это вектор из 4-ёх компонент) и как набор из 2-ух 32-разрядных слов. Про такой "вектор" нельзя говорить, что это графический примитив, он может использоваться в любых совершенно не связанных с графикой расчетах.
2. Слово "вектор" может обозначать декартову тройку координат (x, y, z) - именно три вещественных числа. Для хранения этих трёх вещественных чисел в GPU может быть предусмотрен специальный упакованный формат данных и для манипуляций над этой тройкой чисел может существовать специальный набор команд, реализующих операции векторной алгебры (сложить два вектора, умножить вектор на вещественное число, скалярное произведение двух векторов и т. п.).

Что Вы в данном случае имели в виду? Первое или второе?

На заре появления шейдеров (программ для GPU) программисты могли пользоваться только сильно ограниченным набором низкоуровневых инструкций( подобие ассемблера только для видеокарт ). Естественно, у каждого вендора(ATI/nVidia) были свои уникальные наборы инструкций, что негативно сказывалось на популярности таких программ. Лет 10 назад(а точнее в 2002 году) в OpenGL появилось расширение, которое стандартизовало эти инструкции. Так появился первый кроссплатформенный( не зависящий от вендора GPU ) низкоуровневый язык для видеокарт
http://en.wikipedia.org/wiki/ARB_assembly_language
Я посмотрел статью в Википедии про ARB. Только не понял одного. Это настоящий ассемблер, т. е. набор мнемокодов машинных команд, понимаемых ядрами GPU? Или же это некий псевдоассемблер для некоторого виртуального несуществующего устройства, который транслируется в байт-код, подобный байт-коду виртульной машины Java, а байт-код, в свою очередь, драйвером видеокарты транслируется в настоящий машинный код, исполняемый ядрами GPU? (*Примечание. Просто я читал, что такой подход применяется в технологии CUDA). Что в этом смысле все-таки представляет собой ARB?
0
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,859
Записей в блоге: 5
17.01.2014, 21:00 44
Цитата Сообщение от JohnyWalker Посмотреть сообщение
А что Вы понимаете под словом "вектор"?
Под вектором я имел ввиду 4х компонентный массив типа флоат(4*4 = 16 байт). Где первые 3 элемента обычно это x,y,z - проекции на соответствующие оси координат, а четвёрый - w называют масштабным коэффициентом. Хотя сейчас смысл каждого компонента может быть абсолютно любым как того захочет программист.
Так же этот 4-компонентный вектор идеально походит для хранения цвета RGBA(Red Green Blue Alpha). Где последний компонент отвечает за прозрачность - альфа канал.
Из 4 таких векторов легко собирается матрица, которая может содержать любые трансформации( поворот/перенос/проекция/масштабирование ). Умножая такую матрицу на вектор мы получаем преобразованный вектор(вершину).

Можно заметить что любой GPU должен максимально быстро оперировать с большим кол-вом таких векторов. Складывать/умножать/делить/находить скалярное/векторное произведение и тп.

Цитата Сообщение от JohnyWalker Посмотреть сообщение
Что в этом смысле все-таки представляет собой ARB?
Точный ответ на этот вопрос могут дать только разработчики драйверов видеокарт. Только они знают как оно там всё вертится. Возможно, что некоторые инструкции состоят из более простых(хотя куда уже проще). Или наоборот, несколько инструкций собираются в одну в мега крутую и быструю инструкцию, зная что именно эта инструкция на конкретном чипе работает быстрее.
1
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
18.01.2014, 06:36  [ТС] 45
snake32, спасибо за интересные подробности.

По поводу того, что вектор в GPU является форматом представления графических данных, я бы согласился, если бы ни один нюанс.
Дело в том, что эти самые векторы, о которых Вы говорите (4 числа типа float по 4 байта каждое), и вычисления над ними на низком машинном уровне очень хорошо вписываются в модель SIMD. Единственное, чем они напоминают векторы и точки в пространстве, это числом компонент вектора: в трехмерном поространстве этих компонент 3, здесь их 4. Становится понятно, что процессор оптимизировали под аналитическую геометрию и взяли в качестве размерности вектора наименьшее число вида 2^n большее трёх. В остальном я пока не вижу каких-либо серьезных отличий от любого другого SIMD-вычислителя.

Взять хотя бы тот же набор инструкций расширения SSE процессора Intel http://ru.wikipedia.org/wiki/SSE.
Я не говорю, что векторные вычисления в GPU в точности повторяют набор инструкций SSE. Разумеется, это и близко не так. Однако это расширение вводит специальные регистры размером в 128 бит. Каждый такой регистр хранит 4 вещественных числа в формате float. Над вещественными числами типа float, хранящимися в этих регистрах, можно одной командой выполнить какую-либо однотипную операцию. Т. е. мы имеем в даннном случае такой же векторный вычислитель, каким является и ядро GPU Radeon (с кучей своих особенностей и отличий, разумеется). Даже размерность вектора, формат каждого из его элементов, число бит в регистре, хранящем этот вектор, в точности такой же, как и у GPU AMD Radeon. Но это же не дает нам повода говорить, что расширение SSE системы команд процессора Intel - это набор операций для аналитической геометрии и компьютерной графики, а регистры этого набора имеют специализированный формат для хранения информации о точках трехмерного пространства. Так и в случае с GPU 128 бит в регистре и вектор из 4-ех чисел типа float не дает основания рассматривать его как узкоспециализированный формат для хранения векторов трехмерного пространства. Хотя разработчики GPU наверняка подразумевали, что этот массив будет применяться именно в таком контексте в первую очередь.

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

Это просто мои размышления, Вы можете со мной тут и не согласиться.

По поводу ассемблера ARB, сдается мне, что это все-таки какой-то выдуманный ассемблер. Ассемблер для выдуманного несуществующего устройства. Не может быть такого, чтобы видеопроцессоры nVidia и Radeon, совершенно не похожие друг на друга, имели одинаковый ассемблер. Это нелогично. Скорее всего, просто в целях совместимости придумали такой низкоуровневый язык.

PS
Я тут нисколько не утверждаю, что GPU - это такое вычислительное устройство общего назначения, почти что CPU. Это все глупости. Конечно оно разрабатывалась в расчете на графику и оптимизировалось именно под этот класс вычислений. Ну и сказать, что это узкоспециализированный графический процессор, боюсь, будет ОЧЕНЬ сильной натяжкой. Слишком универсален его набор команд, слишком универсальна модель вычислений, используемая в нем, чтобы так говорить. В противном случае на нем невозможно было бы построить CUDA. Хотя, признаюсь, у меня совсем мало знаний об этом предмете, чтобы лезть во все эти рассуждения.
0
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
18.01.2014, 06:36 46
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Хотя, признаюсь, у меня совсем мало знаний об этом предмете, чтобы лезть во все эти рассуждения.
у нас тоже знаний в этой области кот наплакал
0
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
18.01.2014, 21:54  [ТС] 47
dimank666, еще несколько моих соображений по поводу твоего позавчерашнего поста.

По поводу Google Android.
Кликните здесь для просмотра всего текста

Цитата Сообщение от dimank666 Посмотреть сообщение
еще бы ему не летать он сам весит как один только проигрыватель виндовый

чрез эмулятор винде споконо запускается (лично запускал) вот только графика тормизит так как она обрабатывается процессором на смартвоне а он другой системы
Если интересуешься Андроидом, попробуй найти в Сети родную версию под x86-процессор (т. е. порт Андроида под архитектуру x86). Нужен тебе инсталляционный диск, позволяющий развернуть систему на отдельном разделе жесткого диска. Эмулятор - это не то, в нем производительность упадет раз в 100 - 200 (ты в нем, как я понял, запускал версию под процессор ARM). Ты какой эмулятор использовал?

Вот что удалось нагуглить по этой теме

1. http://en.wikipedia.org/wiki/Android-x86

2. http://www.android-x86.org/ - китайский порт Андроида на x86.
Тебя конкретно должна заинтересовать вот эта вот страничка
http://www.android-x86.org/download
Выбираешь модель устройства (ноутбук, нетбук и т. д.) по конфигурации наиболее близкого к твоему компьютеру (тип процессора - AMD или Intel - не играет в этой конфигурации никакого значения, главное чтобы похожи были видюха, звук, сетевой интрфейс и т. п., чтобы подошли драйвера), скачиваешь iso-образ и пытаешься инсталлировать. Если конфигурации окажутся близкими, все должно заработать.

3. https://01.org/android-ia/ - это аналогичный порт, только от Intel.
Вот страничка с загрузочными образами
https://01.org/android-ia/downloads
А вот краткий FAQ
https://01.org/android-ia/documentation/faq
Не знаю, лучше это или нет китайской версии, совсем не обязательно, что это лучше, но она имеет один плюс. Для последних версий имеется Generic UEFI Installer, т. е., как я понимаю, это версия Androida, рассчитанная на ПК общего типа, а не на какую-то определенную модель ноутбука или таблетки. Больше шансов, что это заработает без сбоев и глюков и сможет опознать все необходимое оборудование. Хотя не уверен, что это так. Сейчас подумал, не исключено, что как раз-то китайская версия (www.android-x86.org) даже больше подходит для ПК общего назначения. Не знаю, что лучше, надо разбираться и смотреть.

Документация и инструкции по установке есть и на китайском, и на интелловском сайте.

4. Дискуссия на форуме одного из дистрибутивов Linux
http://forum.runtu.org/index.php?topic=2073.0
Очень занятно почитать, оказывается, что запуск версии Android под x86 может оказаться очень проблематичным. Чуть-чуть не подходит оборудование, и начинаются проблемы.

5. Маленькая статья по установке этой системы на русском языке
http://androidmir.org/faq/kak-... yuter.html

6. Статейка о том, как установить систему под Virtual Box на английском языке
http://www.pcworld.com/article... ur-pc.html

7. Краткая информация о возможностях и ограничениях этих сборок и о том, как их устанавливать
http://www.4tablet-pc.net/news... uters.html
http://www.4tablet-pc.net/hint... aptop.html
http://it-obzor.com/node/349

8. Ролик на youtube. Парнишка-американец показывает, как он устанавливал эту систему на ноутбук. Все очень кратко и отрывочно, но понять, в принципе, можно.
http://www.youtube.com/watch?v=YglHH_DDvJ4

И еще несколько подобных видео
http://www.youtube.com/watch?v=ezdS_8stVKs - особенно рекомендую просмотреть, если вдруг будешь ставить
http://www.youtube.com/watch?v=mFRXBr2vmHs -качество отвратное, но что-то понять можно
http://www.youtube.com/watch?v=LktC_6-KvmE
http://www.youtube.com/watch?v=sefU9euzy3Q

Если будет интересно - разберешься, хотя никаких гарантий, что на твоей конфигурации это все заработает.
0
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
18.01.2014, 22:16 48
Цитата Сообщение от JohnyWalker Посмотреть сообщение
По поводу Google Android.
да не меня просили просто проверить, почему андроид на компе тормозит
0
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
19.01.2014, 03:30  [ТС] 49
как понять схематически? в данном контексте.
Не схематически, а схемотехнически. Это специальный термин. О разнице между программной и схемотехнической (т. е. чисто аппаратной) реализации вычислений писал тебе выше.

так а вот с этого момента поподробнее
как понять процессор состоит из процессоров что то тут не клеится.
А вот именно так и понимать Возьмем для примера тот же четырехъядерный CPU от Intel или AMD. Он в своем составе имеет 4 физических ядра. На самом деле каждое такое ядро - это самостоятельный законченный процессор. Он содержит регистры общего назначения, конвейер, несколько ALU, FPU и т. д. и способен самостоятельно выполнять свой поток команд. Эти четыре процессора изолированы друг от друга, имеют, наверное, разве что общий кеш третьего уровня и общую шину, через которую они подключаются к материнке. В остальном это 4 совершенно независимых процессора. ОС эти ядра видит именно как полноправные процессоры (смотри SMP, http://ru.wikipedia.org/wiki/%... 1%82%D1%8C). Так что четырехъядерник это просто четыре процессора на одном кремниевом кристалле.

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


По поводу статьи из "Ферры" про устройство видеокарт.
Добавлено через 4 часа 10 минут
Кликните здесь для просмотра всего текста

Графическое ядро представляет собой припаянный к плате чип, в большинстве случаев без защитной крышки, кристалл которого содержит сотни миллионов транзисторов (даже в несколько раз больше, чем у центральных процессоров). Каждый такой чип состоит из вычислительных блоков, контроллеров шины и памяти, блоков для вывода видеоинформации (RAMDAC). Вся эта структура определяется архитектурой ядра, которая сперва разрабатывается для самого мощного видеоадаптера в семействе-поколении, например: G70, G80 – NVIDIA, R580, R600 – AMD. Затем «топовое» ядро упрощается для менее производительных решений методом исключения определённых блоков. Случаи разработки принципиально новых ядер для среднего и нижнего уровня рынка довольно редки.

транзистор, мельчайшая единица, из которого состоят все блоки GPU, представляет собой своеобразные ворота для электронов.

В данный момент времени происходит переход от архитектуры традиционной конвейерной обработки данных графическим процессором к унифицированной и более гибкой благодаря новому API DirectX 10. В предыдущем поколении видеокарт данные, полученные от центрального процессора, сперва обрабатываются вершинным блоком (также называется процессором, конвейером): создаются вершины, над которыми производятся преобразования, дополненные вершинными шейдерами (программы, добавляющие некоторые эффекты объектам, например – мех, волосы, водная гладь, блеск и так далее). Далее вершины собираются в примитивы – треугольники, линии, точки, после чего переходят в пиксельный блок. Здесь определяются конечные пиксели, которые будут выведены на экран, и над ними проводятся операции освещения или затенения, текстурирования (этим занимается блок TMU – Texture Mapping Unit, который связан с пиксельным конвейером), присвоения цвета, добавляются эффекты от пиксельных шейдеров.

всегда упоминается количество пиксельных, вершинных процессоров и текстурных блоков. Например, в видеоадаптере GeForce 7600 GT есть 12 пиксельных и 5 вершинных процессора (ввиду меньшей нагрузки на вершинные конвейеры их количество – в пределах 2-8 шт. в зависимости от уровня графического процессора) и 12 TMU – по одному на пиксельный конвейер. Естественно, чем больше текстурных блоков, тем больше будет производительность видеокарты. Но компания ATI, начиная с серии Radeon X1000, отошла от привычной формулы «один TMU на один пиксельный конвейер», уменьшив общее количество «текстурников», которые теперь не связаны напрямую с пиксельными процессорами благодаря оптимизации архитектуры видеоядра. При этом количество пиксельных конвейеров в самой старшей модели видеокарты было увеличено до 48, а количество TMU осталось на уровне 16 шт. Такое решение – своего рода задел на будущее, так как в последние годы всё более заметно, что разработчики игр ориентируются не на грубую силу в виде огромного числа полигонов, а на тонкий расчёт, то есть использование сложных шейдеров, требующих математической вычислительной мощи.

Теперь поговорим о будущем графических процессоров. В основу унифицированной архитектуры легла концепция потоковой обработки данных, благодаря которой появилась возможность отправки данных на повторную обработку без ожидания завершения всех стадий конвейера. Также был добавлен новый вид шейдеров – геометрический, работающий с геометрией на уровне примитивов, а не вершин, что способствует разгрузке центрального процессора от лишней работы. И, конечно же, отказ от разделения на пиксельные и вершинные процессоры – теперь они общие, получили новое название – потоковые процессоры (стрим-процессоры) и в любой момент могут быть перепрограммированы под конкретные нужды приложения. Если необходим просчёт «скелета» сцены, то для текстурирования и пиксельной работы выделяется необходимое число блоков, а остальное идёт на вершинные операции. Если же, например, необходимо воссоздать бушующее море, всё наоборот: все силы бросаются на пиксельную обработку, а для геометрии, естественно, только необходимое. Количество стрим-процессоров в новых ядрах достигает 128 шт. (NVIDIA) или 320 шт. (AMD), но напрямую их сравнивать нельзя из-за их особенностей. Кстати, если говорить по всей строгости, процессоров у AMD R600 не 320, а 64, но каждый из них за один такт выполняет до 5 инструкций, что равняется 320 виртуальным процессорам. Блоки TMU теперь не связаны напрямую с шейдерными, и их количество не сильно изменилось при переходе к унифицированной архитектуре. Более подробно о тонкостях каждой из архитектур можно прочитать в наших материалах: «NVIDIA GeForce 8800: революция свершилась!» и «Свершилось! Архитектура Radeon HD 2000 – достойный ответ конкуренту».


Прочитал этот отрывок очень внимательно. Что могу сказать про эту статью? Очень много в ней красивых слов-оберток, она пестрит всевозможными вроде бы профессиональными терминами, при этом изложено все настолько малоконкретно и расплывчато, что употребляемым в ней понятиям можно придать любой смысл в зависимости от богатства фантазии читателя. Принципы работы графического процессора, идеи, лежащие в его устройстве, не раскрыты НИСКОЛЬКО. Такие статьи нужны больше всего производителям этого железа в качестве рекламы, чтобы стричь бабло с населения. Мне же вот эта статья не дала почти НИЧЕГО! Хотя вот 99% публикаций в Инете, посвещенных компьютерной тематике, еще хуже этого. Computerra, Мир ПК, Ferra и тому подобные попсовые издательства - FUCK YOU! Жаль, что тут нету на форуме соответствующего смайлика!

Теперь ближе к сути...

Каждый такой чип состоит из вычислительных блоков, контроллеров шины и памяти, блоков для вывода видеоинформации (RAMDAC).
Этим терминам можно придать абсолютно любой смысл (настолько все это малоконкретно), в том числе и тот, который придаю им я в нашем с тобой споре.
Состоит из
- вычислительных блоков - это могут быть те самые ядра-процессоры со своей системой ассемблерных команд, на которых запущены программы-нити;
- контроллеров шины и памяти - при наличии большого числа процессоров в любой многопроцессорной системе необходимо большое количество шинных устройств, тех самых контроллеров памяти, для обмена информацией между процессорами и общей памятью, а также возможно (если только архитектура системы такое предполагает) между блоками внутренней памяти различных процессоров. Эти шинные контроллеры при большом количестве ядер возможно будут образовывать между собой подобие сети. Но все это верно не только для GPU, но и для огромного суперкомпьютера;
- блоков для вывода видеоинформации (RAMDAC) - речь идет, наверное, о генераторе выходного аналогового сигнала видеокарты, используемого при подключении мониторов по VGA. Ну да, он объединяет в себе цифровой контроллер и ЦАП.

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

Теперь это
Кликните здесь для просмотра всего текста

В предыдущем поколении видеокарт данные, полученные от центрального процессора, сперва обрабатываются вершинным блоком (также называется процессором, конвейером): создаются вершины, над которыми производятся преобразования, дополненные вершинными шейдерами (программы, добавляющие некоторые эффекты объектам, например – мех, волосы, водная гладь, блеск и так далее). Далее вершины собираются в примитивы – треугольники, линии, точки, после чего переходят в пиксельный блок. Здесь определяются конечные пиксели, которые будут выведены на экран, и над ними проводятся операции освещения или затенения, текстурирования (этим занимается блок TMU – Texture Mapping Unit, который связан с пиксельным конвейером), присвоения цвета, добавляются эффекты от пиксельных шейдеров.

и это
Кликните здесь для просмотра всего текста

всегда упоминается количество пиксельных, вершинных процессоров и текстурных блоков. Например, в видеоадаптере GeForce 7600 GT есть 12 пиксельных и 5 вершинных процессора (ввиду меньшей нагрузки на вершинные конвейеры их количество – в пределах 2-8 шт. в зависимости от уровня графического процессора) и 12 TMU – по одному на пиксельный конвейер. Естественно, чем больше текстурных блоков, тем больше будет производительность видеокарты. Но компания ATI, начиная с серии Radeon X1000, отошла от привычной формулы «один TMU на один пиксельный конвейер», уменьшив общее количество «текстурников», которые теперь не связаны напрямую с пиксельными процессорами благодаря оптимизации архитектуры видеоядра. При этом количество пиксельных конвейеров в самой старшей модели видеокарты было увеличено до 48, а количество TMU осталось на уровне 16 шт. Такое решение – своего рода задел на будущее, так как в последние годы всё более заметно, что разработчики игр ориентируются не на грубую силу в виде огромного числа полигонов, а на тонкий расчёт, то есть использование сложных шейдеров, требующих математической вычислительной мощи.

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

Я все-таки думаю, что это не так. Что все эти блоки, о которых в статье ведется речь, - это какие-то абстракции. Возможно даже они описаны в OpenGL и DirectX, как некая абстрактная модель преобразования графической информации в видеокарте. Весь этот замысловатый конвейер можно изобразить в виде блок-схемы на чертеже. В действительности, как я уже тут столько раз писал, все эти блоки (якобы структурные элементы видеокарты) не более, чем запущенные на ядрах GPU небольшие программы. Ядра работают одновременно и эти программки-нити на них исполняются параллельно. Что же касается конвейерного принципа обработки, то этот конвейер может быть организован и программным путем. Алгоритм получения изображения делится на четкие операции. Каждая программа-нить выполняет строго одну операцию, но выполняет ее чисто и безукоризненно. Выходные данные одних программ-нитей (элементов этого конвейера) оказываются входными данными других программ-нитей. Принцип конвейерной обработки информации хорошо знаком программистам. Это один из подходов модульного программирования. Особенно легко его реализовать в случае многопроцессности или многопоточности, которая в видеопроцессорах как раз и проявляется в полной мере.

Поэтому на твой вопрос
в процессоре компьютера такое есть?
(ты подразумевал вершинный блок, пиксельный блок, текстурный модуль, шейдерный обоаботчик)
я отвечу так.

Такого, конечно, нет в CPU. Но нет ничего подобного и в GPU, по крайней мере в его аппаратной части. Ядра GPU (по сути дела процессоры) аппаратно не реализуют ни одной такой высокоуровневой инструкции над подобными геометрическими абстракциями, их инструкции и форматы данных, над которыми они оперируют, по уровню не превосходят инструкцции CPU. Лучше всего я сформулировал эту свою мысль, мне кажется, здесь https://www.cyberforum.ru/post5653544.html

Добавлено через 5 минут
PS
Я могу, конечно, и сильно заблуждаться.
Но вроде как убедительных доказательств моей неправоты мне никто пока не предоставил.
0
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
19.01.2014, 04:31 50
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Так что четырехъядерник это просто четыре процессора на одном кремниевом кристалле.
ну если так то с этим согласен

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

Если блоком Raster Engine наделен каждый GPC-кластер, то блоки ROP (Raster Operation), то есть блоки растровых операций, используются совместно всеми GPS-кластерами. Несмотря на схожесть названия, блоки Raster Engine и ROP выполняют различные функции. Блок ROP выполняет операции блендинга, то есть задает прозрачность объектов, а также реализует операции сглаживания.

В процессоре GF100 имеется 48 блоков ROP, объединенных в четыре модуля по шесть блоков в каждом. Каждый модуль ROP связан с отдельным 64-битным контроллером памяти (напомним, что всего в GF100 имеется шесть контроллеров памяти). Ну и, кроме того, каждый ROP-модуль связан с L2-кэшем графического процессора.

Каждый блок ROP может за такт обрабатывать один пиксел с целочисленным 32-битным значением, либо один пиксел FP16 за два такта, либо один пиксел FP32 за четыре такта. Таким образом, максимальная производительность ROP составляет 48 целочисленных 32-битных пикселов, либо 24 FP16-пикселов, либо 12 FP32-пикселов.

Согласно данным компании NVIDIA, благодаря увеличенному количеству блоков ROP и улучшенным алгоритмам сжатия, возрастает и скорость сглаживания 4x и 8x MSAA. В сравнении с GT200 скорость выполнения сглаживания 4x и 8x MSAA выше в 1,6 и 2,3 раза соответственно.

Кроме того, в графическом процессоре GF100 реализован новый тип сглаживания 32x CSAA (Coverage Sample Antialiasing)
можешь такое еще почитать если интересно
http://poznaycomp.ru/xarakteristiki-videokart/
http://megalife.com.ua/interes... ktury.html
http://www.compress.ru/Article.aspx?id=21293

Добавлено через 13 минут
Цитата Сообщение от JohnyWalker Посмотреть сообщение
А ты уверен, что все эти блоки и модули, о которых тут ведется речь, физически существуют? Что каждому такому блоку: вершинный конвейер, пиксельный блок, текстурный блок, соответствует реальное физическое устройство? Что это устройство реализовывает такое действие на аппаратном уровне, представляет собой специализированную электронную схему на кристалле чипа и способно выполнять только одно строго определенное преобразование?
да уверен на все 99.99999% только я карту не распиливал поэтому 100% не дам )
выражусь образно так что не пинайте сильно
сам подумай,
если тебе надо сложить 2+2, надо процессор который имеет 2 регистра,
а если тебе надо 2+2+2 то тут уже надо 3 регистра и так далее
затем а если у тебя 222+222 то нужен уже процессор в котором регистре может содержать три знака.
вот все эти мелочи и делают (процессор, ядро, блок) отличными от других (процессор, ядро, блок)

Добавлено через 15 минут
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Весь этот замысловатый конвейер можно изобразить в виде блок-схемы на чертеже. В действительности, как я уже тут столько раз писал, все эти блоки (якобы структурные элементы видеокарты) не более, чем запущенные на ядрах GPU небольшие программы.
давай представим строение процессора.
1) минимальный элемент транзистор
2) куча этих транзисторов образует логический блок
3) еще одна куча образует кеш память
4) еще дна куча образует всякие регистры и так далее
итого на выходи мы имеем один логический блок с регистрами и внутренней памятью (будем называть его элемент)
теперь для расчета вершин нам нужно 8 в ширину и 5 в длину таких элементов образуем блок для расчета вершин

для заполнения текстурами
нам наоборот нужно 128 в ширену и 2 в длину таких элементов

вот у нас и 2 блока которые технически друг от друга отличаются

и если ты поменяешь их местами будешь вершины считать на 128*2 а текстуры заполнять 8*5 то производительность у тебя резко упадёт

вот в чем отличие строения чипа видеорты и его внутренних блоков

Добавлено через 27 минут
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Но вроде как убедительных доказательств моей неправоты мне никто пока не предоставил.
попробую привести доказательства которые опровергают твою теорию
Итак представим что нам надо построит 9 домов
следуя твоей логике все процессоры одинаковы.
Следовательно у тебя есть 1000 рабочих которые о строительстве ничего не знают пусть это будут клоны и если ты их обучил копать, они могут только копать, надо чтобы они таскали, значит они забывают как как копать, и ты их обучаешь как таскать.

следовательно вы начали строить ты всем 1000 говоришь капаем яму ну показал им они начали капать, да выкопают они быстро слову нет так как лопатой махать не строить

далее заливаем фундамент а вот тут облом надо готовить цемент, заливать, таскать, сеять песок и так далее так как ты отдаёшь команды всем 1000 клонам то тебе снова надо их обучить как делать цемент как заливать бетон как таскать сеять песок ну и все остальное. это очень долго

вот представь потом надо крипичи ложить окна ставить обои клеить и тд. а мы еще даже первый этаж не построили

а вот у меня например есть 500 рабочих
но они квалифицированы объеденные в группы один копают другие цемент готовят трети кирпичи укладывают и разбиты они у меня по групам например копают 200 человек цемент мешают готовят 10 человек кирпичи укладывают 5 человек и так далее то есть, в зависимости от нагрузки разное количество рабочих
1
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
19.01.2014, 05:46  [ТС] 51
То есть ты мне хочешь сказать, что наряду с процессорами общего назначения, ориентированными на параллельные вычисления, в GPU существует еще масса специализированных вычислителей, в которых аппаратно реализовано одно определенное преобразование данных и которые ни для чего другого больше не годятся?

То, о чем я вел речь, - это, допустим, в видеокарточках nVidia так называемые Streaming Multiprocessors, они действительно универсальны и годятся для любых вычислений, не только для обработки графики. На них и реализована технология CUDA. Но это не единственный тип вычислителя в микросхеме GPU, т. к. в ней имеется еще несколько типов узкоспециализированных устройств, каждое из которых способно выполнять только одно узкое вычисление, полезное только для графики. Они совершенно непригодны для программирования и при всем желании их бы не удалось приспособить под технологию CUDA, т. к. на их основе не удастся реализовать никакой язык программирования. Все эти устройства работают вместе с потоковыми мультипроцессорами, так что, ты хочешь сказать, ФИЗИЧЕСКИЙ конвейер, составленный из разных устройств в GPU все-таки ЕСТЬ!

Суть твоих слов я уловил?

Добавлено через 12 минут
Цитата Сообщение от dimank666 Посмотреть сообщение
попробую привести доказательства которые опровергают твою теорию
Итак представим что нам надо построит 9 домов...
Тут твоя аналогия немножко хромает, и я тебе скажу, в чем. Технология универсальных оптимизированных под параллельность процессоров - она тоже очень мощная.
Конечно их еще лучше дополнить маленькими узкоспециализированными вычислителями. Но даже без них можно многого добиться. В статьях, которые ты мне дал, прямым текстом пишут, что раньше типов процессоров в GPU было больше, потом их стало меньше, ряд из них унифицировали и появился единый Streaming Multiprocessor как основное вычислительное ядро.

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

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

Впервые унифицированная архитектура была применена в видеочипе игровой консоли Microsoft Xbox 360, этот графический процессор был разработан компанией ATI (впоследствии купленной AMD).

А в видеочипах для персональных компьютеров унифицированные шейдерные блоки появились ещё в плате NVIDIA GeForce 8800. И с тех пор все новые видеочипы основаны на унифицированной архитектуре, которая имеет универсальный код для разных шейдерных программ (вершинных, пиксельных, геометрических и пр.), и соответствующие унифицированные процессоры могут выполнить любые программы.

По числу вычислительных блоков и их частоте можно сравнивать математическую производительность разных видеокарт. Большая часть игр сейчас ограничена производительностью исполнения пиксельных шейдеров, поэтому количество этих блоков весьма важно.
Так что тут производители карточек пошли в чем-то моим путем.
Хотя тут возможны различные пути.
0
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
19.01.2014, 06:16 52
Цитата Сообщение от JohnyWalker Посмотреть сообщение
То есть ты мне хочешь сказать, что наряду с процессорами общего назначения, ориентированными на параллельные вычисления, в GPU существует еще масса специализированных вычислителей, в которых аппаратно реализовано одно определенное преобразование данных и которые ни для чего другого больше не годятся?
можно и так сказать

Добавлено через 4 минуты
Цитата Сообщение от JohnyWalker Посмотреть сообщение
так что, ты хочешь сказать, ФИЗИЧЕСКИЙ конвейер, составленный из разных устройств в GPU все-таки ЕСТЬ!
Суть твоих слов я уловил?
ну пусть это будет конвейер в котором разные блоки
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Но это не единственный тип вычислителя в микросхеме GPU, т. к. в ней имеется еще несколько типов узкоспециализированных устройств, каждое из которых способно выполнять только одно узкое вычисление, полезное только для графики.
вот эта строчка самое то
а вот насчет программирования этих блоков я не знаю но что то мне подсказывает, что даже если бы их можно было программировать то только к аналогичным задачам

Добавлено через 5 минут
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Тут твоя аналогия немножко хромает, и я тебе скажу, в чем. Технология универсальных оптимизированных под параллельность процессоров - она тоже очень мощная.
Конечно их еще лучше дополнить маленькими узкоспециализированными вычислителями. Но даже без них можно многого добиться. В статьях, которые ты мне дал, прямым текстом пишут, что раньше типов процессоров в GPU было больше, потом их стало меньше, ряд из них унифицировали и появился единый Streaming Multiprocessor как основное вычислительное ядро.
В конфигурацию GK104 входит четыре кластера GPC (Graphics Processing Clusters), каждый из которых включает четыре блока потоковых процессоров (Streaming Multiprocessors, SM). Блок состоит из 96 потоковых процессоров (Stream Processors, SP или ядра CUDA в системе обозначений NVIDIA), так что их общее число равно 1536. Количество текстурных блоков в каждом SM равно 8 (общее количество — 128, а блоков растровых операций — 32.
так понятнее

Добавлено через 13 минут
JohnyWalker, я уже устал приводит примеры и доводы
и уже начал забывать о чем мы спорим

возьмем даже твой Streaming Multiprocessors он состоит
Блок состоит из 96 потоковых процессоров.
Количество текстурных блоков в каждом SM равно 8
а блоков растровых операций — 32.

только это уже говорит что есть разные блоки объединенные в Streaming Multiprocessors
какие доказательства тебе нужны еще
0
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
19.01.2014, 07:06  [ТС] 53
Цитата Сообщение от dimank666 Посмотреть сообщение
JohnyWalker, я уже устал приводит примеры и доводы
и уже начал забывать о чем мы спорим
А спорить тут не о чем. Я лишь процитировал одну из статей, которые ты мне сбросил. И сказал, что судя по ней, раньше специализация была большей. Потом несколько более специализированных процессоров (вершинный, пиксельный) слили в один универсальный. Что от такой чрезмерной специализации ушли и создали универсальный CUDA-процессор, пригодный под любой тип параллельных вычислений. Всё.

Но при этом я понял, что многие специализированные модули все равно остались. Их не стали все уничтожать и целенаправленно изводить. Я про них ничего не знал и был до этого уверен, что современный GPU состоит только из универсальных Streaming/CUDA-процессоров (тут не в терминологии дело), что он целиком однороден. Да, я ошибался, сильно упрощал ситуацию, но я это признаю. Так что споришь сейчас уже ты.

Добавлено через 10 минут
У меня другой более практический вопрос к тебе.

Понятно, что у видеокарты есть ПЗУ, в котором хранится ее прошивка. Где она находится? В самом чипе GPU? Или для нее есть отдельная своя микросхема на видеокарточке?
0
7814 / 5145 / 204
Регистрация: 29.08.2011
Сообщений: 38,196
Записей в блоге: 1
19.01.2014, 12:34 54
Цитата Сообщение от JohnyWalker Посмотреть сообщение
Или для нее есть отдельная своя микросхема на видеокарточке?
скорее всего отдельная микросхема, так как прошивка тоже регулирует частоту памяти и процессора (и даже внутренних блоков процессора)
1
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
19.01.2014, 20:16  [ТС] 55
Да, судя по всему, это так. Вот нашел статью на английском (на русском ничего не попалось), где об этом что-то сказано, а сама микросхема Video BIOS выделена красным квадратиком на картинке
http://www.techpowerup.com/art... vidcard/34.

Вот еще случайно на youtube обнаружил канал с видеоуроками по ремонту компов
http://www.youtube.com/user/1servicecore.
Много занятных и интересных вещей, для меня по крайней мере...
0
19.01.2014, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2014, 20:16
Помогаю со студенческими работами здесь

После апгрейда видеокарты упала производительность и стабильность работы в играх
Мой комп довольно слабый Phenom 9550 (4 x 2.2Ghz) / 6GB DDR2-800 / БП 470w / материнка gigabyte...

Сбой работы системы после попытки подключения видеокарты(nvidia gf8500gt) к ТВ
Помогите! Попробовал подключить к видяшке телевизор через RCA шнур, врезультате появилось...

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

Выбор видеокарты для обработки видео и работы с графикой ( в том числе с широкоформатной версткой).
Всем привет. Я не очень в этом разбираюсь. Нужно поменять видеокарту у мамы на компе. Что мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
55
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru