Конференция работает на сервере Netberg

Radeon.ru

Конференция Radeon.ru

Страница 1 из 2 [ Сообщений: 44 ]  Версия для печати [+] На страницу 1, 2  След.
Показать сообщения за  Поле сортировки  
В силу того, что мне достаточно часто приходилось наблюдать странности, связанные с видеокартами на чипах R300 и R350, связанные с неверной инициализацией результатирующей частоты памяти в программах, обращающихся напрямую к железу (Riva Tuner, PowerStrip, e.t.c.), я решил устроить своё собственное расследование, целью которого было выяснение природы феномена, приводящего к определению не удвоенной, а учетверённой частоты памяти.
Для начала, немного истории:
Когда создавалось ядро R300, то разработчики из ATI решили сделать его с взглядом в будущее, вследствие чего реализовать во встроенном контроллере памяти поддержку как памяти DDR1, так и DDR2, которая отличается от первой целым рядом особенностей, а чётких понятий о принципах её функционирования я не имел. И именно это послужило заблуждением, направившим меня на ложный путь…

DDR2
Наверное, ни для кого не секрет, что память SDR отличается от DDR тем, что последняя передаёт импульс не только по восходящему, но и по нисходящему фронтам тактового импульса, передавая по 2 бита за один такт. Но многие ли знают принцип действия той самой DDR2, которую сейчас активно продвигают Intel и JEDEC (Joint Electronic Device Engineering Council)? Думаю, что нет. В связи с тем, что открытых спеков и PDF’ов на сайтах обоих вендоров нет, пришлось пользоваться сотнями железячных сайтов, на 90% из которых была либо информация о том, что очередной производитель выпустил DDR2 модуль на X Gb, а на оставшихся 10% предложения купить Radeon 9800 с 256Mb DDR2 и ревущий GeForce FX5800 Ultra, пришлось немного повозиться.
Ответ на вопросы «что есть DDR2?» и «Кто ест DDR2» был найден на сайте www.toms-hardware.ru и www.micron.com . DDR2 представляет собой не SDR, работающую на учетверённой частоте (либо DDR, работающую на удвоенной частоте), а обычную DDR1, имеющую бОльшую упреждающую выборку и бОльшие задержки. Подробнее об устройстве DDR2 можно узнать из этого PDF’а. Чтобы на 100%-ов убедится в том, что карта не начинает реально передавать по 4 сигнала за такт, просматриваем содержимое BIOS’а DDR1 Radeon 9800SE, DDRII Radeon 9800 256Mb и DDRII Radeon 9800 256Mb с выставленной «задержкой СL=1». Смотрим в 0x0190 – 0x01D0 и видим следующее:

Radeon 9800SE:
<BLOCKQUOTE class="code"><SPAN class="small">код:</SPAN><HR><PRE>41 54 49 20 52 33 35 30 00 61 12 0C 7D FF FF FF
FF F5 CE 01 02 FF FF FF FF 00 00 00 00 FF FF FF
FF 00 00 00 00 FF FF FF FF 61 12 0C 7D FF FF FF
FF F5 CE 00 00 FF FF FF FF 00 00 00 00 FF FF FF
</PRE><HR></BLOCKQUOTE>

Radeon 9800SE «CL=1»
<BLOCKQUOTE class="code"><SPAN class="small">код:</SPAN><HR><PRE>41 54 49 20 52 33 35 30 00 60 12 0C 3D FF FF FF
FF B8 CD 01 02 FF FF FF FF 00 00 00 00 FF FF FF
FF 00 00 00 00 FF FF FF FF 60 12 0C 3D FF FF FF
FF B8 CD 00 00 FF FF FF FF 00 00 00 00 FF FF FF
</PRE><HR></BLOCKQUOTE>

Radeon 9800 256Mb DDRII:
<BLOCKQUOTE class="code"><SPAN class="small">код:</SPAN><HR><PRE>41 54 49 20 52 33 35 30 00 7E 5A 84 A1 FF FF FF
FF 19 E3 01 02 FF FF FF FF 00 00 00 00 FF FF FF
FF 00 00 00 00 FF FF FF FF 7E 5A 84 A1 FF FF FF
FF 19 E3 00 00 FF FF FF FF 00 00 00 00 FF FF FF
</PRE><HR></BLOCKQUOTE>

Radeon 9800 256Mb DDRII «CL=1»
<BLOCKQUOTE class="code"><SPAN class="small">код:</SPAN><HR><PRE>41 54 49 20 52 33 35 30 00 7A 5A 84 E1 FF FF FF
FF E0 E5 00 00 FF FF FF FF 00 00 00 00 FF FF FF
FF 00 00 00 00 FF FF FF FF 7A 5A 84 E1 FF FF FF
FF E0 E5 00 00 FF FF FF FF 00 00 00 00 FF FF FF
</PRE><HR></BLOCKQUOTE>
Сразу в глаза бросается то, что:
1. Тайминги памяти находятся в зашифрованном состоянии между блоками из последовательности из четырёх HEX’овых нулей и четырёх FF’ов, соответствующих десятичным 255.
2. У карт с «CL=2» в строке 0х01B0 всегда присутствует комбинация из «01 02», а у карт с «CL=1» она заменяется иногда на «00 00».
3. Hex’овые значеия таймингов в строках 0x0190 и 0x01B0 сдвигаются на (-40), а в строках 0x01A0 и 0x1C0 – на (-1).
Вывод: DDR2 тут не причём, а частоты карты программируются неверно.

Подкрепляем теорию практикой.
За определение результатирующей частоты памяти в RT отвечает следующая формула:
MClk = 2 * <feedback_divider> * <reference_clk> / ( <reference_divider> * <post_divider> )
Если подсчитать по этой формуле частоту карт, в BIOS которых выставлено значение CAS=1 (на самом деле это не CAS, о общие настройки таймингов и прочих параметров памяти, отвечающие за что-то другое), то реальная частота памяти на 300Mhz станет определяться как 600Mhz, а эффективная – как 1200. Если эффективная частота памяти реально увеличивается в два раза при установке параметра CL в значение 1, то производительность карты (если она вообще загрузится) должна существенно возрасти.
Для проведения эксперимента было решено прошить модифицированный BIOS от Powercolor Radeon 9800SE Gold на Powercolor Radeon 9500 256bit.
Не буду вдаваться ни в настройки видеокарты при «CL=1» и «CL=2», ни в детали о версиях ПО и аппаратного обеспечения, а лишь отмечу тот факт, что результаты тестирования не показали совершенно никакой разницы в скорости между 300 x2 и «600 x2» Mhz. Это говорит о том, что данное значение вообще не является никаким таймингом, а служит лишь для предоставления информации о частотах карты. Числовое значение «тайминга», соответствующее 2 является дефолтным для всех карт, а его смена на какие-либо иные значения приведёт лишь к неверному определению их частоты, но не к росту производительности.
эээ.
Я грузанулся, и теперь я перевариваю эту статью... Изображение
Detonator/LX
http://www.radeon2.ru/ubb/Forum3/HTML/000154-2.html#42
Detonator/LX
А с чем в таком случае прикажете кушать реальный подъем потолка разгона памяти при CL=1?
Я сам лично проверял, имеет место быть.
Detonator/LX
АААфигеть!!! Вот это роман Изображение
Но, увы. Выбрось всё и забудь. Ничего и близко к истине. Изображение
Кроме этого:
>> MClk = 2 * <feedback_divider> * <reference_clk> / ( <reference_divider> * <post_divider> )

А теперь о ТАЙНЕ!!!
Только тссссс..., никому не говори Изображение
CAS = post_divider

Ну и с Новым Годом всех! Изображение
ur
ап. 324 (648) против 310 (610) на 9500 128бит — последний результат, вчера получен.
Darth_Vader
напиши плз как действительно заменить CAS тайминг на моей видяхе 9200 с "2" на "1", потому как пробовал заменить тайминг с помошью редактора БИВИСов в итоге производительность осталась на прежнем месте, чего не могло быть при реальной замене тайминга памяти с "2" на "1"
max_ms
Возможно, это работает только для 9(5/7/8)00, ибо я менял все тем же радедитом...
дык радэдит правильно меняет латентность памяти или только пытается?
max_ms
Читай выше — это никакая не латентность (хотя и только как дивайдер интерпретировать я бы не стал — не объясняет поднятие потолка разгона).
Darth_Vader ну дык я и спросил у тебя как нормально выставить латентность...
а то что радэдит гонит это я уже давно узрел...
max_ms
Спроси че полегче... Изображение
напиши плз как действительно заменить CAS тайминг на моей видяхе 9200 с "2" на "1"
в таком случае, с чего ты взял что у тя КАС=2? сам знаешь, радедит чушь кажет.
Darth_Vader врятли бы Гигабайт поставил "1", обычно станадартно на видяхах ставят "2"
Ну дык может кто утилитку попробует сделать, совместными усилиями Изображение. Которая, хотябы, будет показывать тайминги. Ну а потом видно будет Изображение.
А вот тут http://overclockers.ru/files/?dir=29 , что-то есть: TestVideoRAM 1.0a Программа для тестирования видеопамяти карт Nvidia и ATI Radeon 9500-9800 с возможностью устанавливать начальные частоты GPU и памяти, отдельные тайминги памяти. Предназначена в том числе и для нахождения максимально возможных частот GPU и памяти. См также здесь.
Darth_Vader
Читай выше — это никакая не латентность (хотя и только как дивайдер интерпретировать я бы не стал — не объясняет поднятие потолка разгона).

Внятно же написали, что это post divider.
Обоснований, почему у тебя увеличился потолок разгона, можно придумать и подвести тучу.
Суть же дела от этого не изменится.

Вот еще раз.
http://www.radeon2.ru/ubb/Forum25/HTML/000269.html#3
<BLOCKQUOTE><SPAN class=hquote>цитата:</SPAN><HR size=22><SPAN class=quote>Anton
В биосе они есть. Пока их там вычислить не удалось. То, поле, что меняется в прежних версиях РадЕдит, таимингами (по крайней мере, в чистом виде) не является.
У меня есть описание на микросхемы памяти (у 9700про и 9800про они одинаковые). Согласно ему, там весьма сложная система таймингов:
CAS Latency 4/4
tRC 13/15
tRFC 15/17
tRAS 9/10
tRCDRD 4/5
tRCDWR 2/3
tRP 4/5
tRRD 3/4
tDAL 7/8
Цифры даны для 300/350 МГц соответственно.</SPAN><HR size=22></SPAN></BLOCKQUOTE>
Оптимальные параметры видеопамяти зависят от используемой видеопамяти, сигнальных/опорных уровней, окружения.

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

Видеопамять же устанавливается еще при производстве конкретного видеоадаптера с конкретной PCB, и является неотьемлемой ее частью (времена, когда видеопамять устанавливалась в дополнительные гнезда расширения на видеоадаптере, прошли). И естественно, что все частотно-временные параметры, заложенные в спецификацию видеопамяти, уже учтены в соответствующем видеобиос и в аппаратном окружении.
Если вы не собираетесь перепаивать/менять видеопамять на другую, отличную от текущей, то в 99% случаев заложенные в биос настройки для видеопамяти уже являются оптимальными для этой памяти и для данных частот, во всяком случае в полном соответствии с заложенными/заявленными производителем памяти спецификациями.

Изменив какие-то из параметров, можно:
1. Ухудшить стабильность и получить какие-то проблемы.
2. Улучшить стабильность.
Но чаще всего первое.
Учитывая, что наиболее оптимальные параметры уже исходно были установлены (наиболее оптимальные на штатных частотах работы видеопамяти при штатных сигнальных и опорных уровнях, для конкретных видеопамяти, окружения и PCB), и что далее следовали только попытки уйти от точки оптимальности различными способами, что именно будет происходить в нештатных режимах, заведомо неизвестно ни производителям карты, на разработчикам биос, ни производителям этой памяти, публикующим спеки для штатных режимов ее работы.

Учитывая, что все эти попытки что-то изменить на кустарном уровне производятся вслепую, получается непонятно какой результат. Меняете непонятно что —> получаете непонятно что —> интерпретируете это непонятно что как придется.
NEW
Ну как, есть старая мечта- увеличив тайминги, поднять частоты работы, вдруг вылезет лишний фпс. Помнишь, для тнт была программа для разгона TNT CLK , где можно было менять тайминги, дак вот я, менял их так и сяк, разгон увеличивался, но производительность не особо заметно Изображение
Alex P
Тем не менее, спеки на частоты и тайминги — константа, выигрывая что-то одно, часто проигрываешь в другом.
Учитывая, что тайминги двигаются дискретно, лучше менять частоты, там она, дискретность, меньше заметна.
NEW
угу, так уж имхо все мечтают подобрать такие тайминги, чтоб частота оказалась максимально возможной. А так я на 75% с тобой согласен
denis!!!
Согласен с тобой про 75%, не про 100 Изображение. Например, в моей OCZ(это уже не про видео) гораздо выгоднее синхронный с процессором разгон на максимальных таймингах, чем асинхронный на меньшей частоте, но с минимальными таймингами, что, собственно, тесты и показывают, иначе говоря, не всегда производитель так уж все оптимизирует. Не всегда минимизация задержек дает больший эффект, чем б0льшая частота работы, иногда частоты повышаются значительно. И Матрокс когда то для своей 400-й серии карт выпустил утилитку, позволявшую выжать из него все, так сказать, до последней капли, поскольку разброс есть всегда и невозможно оптимизировать каждую конкретную плату под максимум
Что нарыто в radedit"е неизвестно, но замена условного cas2 на cas1 дает мне гнать память 3,6n на 30(60)мгц больше, и не надо мне рассказывать про ничтожный прирост fps. Конечно, хочется узнать, что это такое, и что и как оно делает с памятью... Один из rivatunerов на таком биосе всегда лажался с определением частоты 350-700-1400...
al23
Прошивка на мой 9500 биоса от 9700про (самсунг) давала возможность гнать память почти на твои же 30 МГц больше, но результирующие попугаи были меньше, чем на родном биосе, с которым карта работала на гораздо меньшей частоте. Тогда же, при обсуждении этого, я мучил NEW предложением прошить биос от 9700 под память HY 3.6 и посмотреть, что будет с частотами и производительностью, но он как то это дело замял, под конец проткнув свою карту отверткой и починив сильно позже Изображение Не помню уже, где эта ветка
Alex P
У меня производительность зависит от частоты, прошитой в биосе (родном модифицированном) и от которой ведется разгон далее уже софтом, а твою заморочку с падением я помню и объяснить не могу, может, просто перегрев. Замена cas отодвигает у меня ломку текстур без падения fps
al23

> Один из rivatunerов на таком биосе всегда лажался с определением частоты 350-700-1400...

Люди, вы ветку читаете или где? RT выводил и выводит _правильную_ частоту, а что такое CAS на самом деле уже более чем понятно объяснил ur.
Unwinder
RT выводил и выводит _правильную_ частоту
Например, 700 (1400 DDR) для карт с 350 (700 DDR) Изображение
Я конечно понимаю что извращения с пост-дивайдером не в ответственности РТ, но факт остается...
Darth_Vader

> Я конечно понимаю что извращения с пост-дивайдером не в ответственности РТ, но факт остается...

Sorry, но абсолютно понимаешь, равно как, похоже, не понимаешь того, что есть post-divider. Факт? 700 — это _реальная_ частота, на генерирацию которой запрограммирован PLL.
Ещё раз для тех кто в танке и не понимает что такое post-divider: PD — это один из параметров генератора частоты, и в результате его изменения при "редактировании CAS" в PLL загоняется _в_два_раза_большая_частота_.
Unwinder
что такое CAS на самом деле
О чем и речь, а не о RT (к нему претензий нет, могу даже пропеть хвалебную песнь)
Последние две версии RT совершенно не смущает значение PD и я могу нормально выставить в нем частоту (кстати, какая тогда версия гораздо правильнее определяет эффективную частоту, та что пишет 700 или та,что 1400?)
Unwinder
к нему претензий нет, могу даже пропеть хвалебную песнь
Эт понятно. Изображение
в PLL загоняется _в_два_раза_большая_частота_.

Изображение Изображение Изображение
Стоп! Стоп! Стоп! Я дурак, или это — одно из двух? Изображение Насколько я понял, раньше подобная сложность с определением MPLL наблюдалась на GeForce2 MX400 с SDR. Right? Если оно так, то можно сделать в следующем RT алгоритм, подобный "heuristic fake DDR detection algorithm". Right? Если оно не так — то в PLL забивается _реальная_ частота, на которой функционирует карта? Если возможно удвоение реальной частоты, то это должно послужть спасением для Radeon 9500 Pro, однако резкльтаты с PD = 1 и с PD = 2 примерно одинаковы.
Вывод: RT показывает погоду?
Ламерок
должно послужть спасением для Radeon 9500 Pro
от чего? Изображение
Darth_Vader
От низкой пропускной способности памяти, явно недостаточной для R300.
Ламерок
Майн готт, ты что — считаешь, что память рассчитанная на 350 (700) МГц будет реально работать на 700 (1400)?
Насмешил... а может, на 700 MHz SDR Изображение ?
Ламерок

> Стоп! Стоп! Стоп! Я дурак, или это — одно из двух? Насколько я понял, раньше подобная сложность с определением MPLL наблюдалась на GeForce2 MX400 с SDR. Right?

Нет. Absolutely. Путаем божий дар с яичницей. На NV железе есть аппаратно активизируемая возможность деления частоты MPLL пополам. Используется для унификации программирования частот на SDR и DDR картах. Грубо говоря, IHV может выбрать, для генерации _какой_ частоты будет использоваться MPLL. При использовании SDR памяти программируется реальная частота. При использовании DDR и задействовании этого делителя — _эффективная_, а аппаратный делитель преобразует её к 'нормальному' виду. Проблема, о которой Вы говорите, обусловлена тем, что некоторые хитропопые китайские братья стали использовать этот делитель для надувания народа и завышения тактовых частот.
На ATI железе, AFAIK, _всегда_ программируется реальная частота.

> Если оно не так — то в PLL забивается _реальная_ частота, на которой функционирует карта?

Этого я не говорил. Частота, на генерацию которой запрограммирован PLL, и частота, которую он в действительности генерирует — далеко не одно и то же. Tip: в BIOS не зря есть диапазоны доступных для генерации частот Изображение PLL физически не может генерировать любое значение, которое Вы пожелаете. Подробнее свои мысли о причинах того, почему это работает, я изложил в ветке, посвещённой обсуждению atiid.

> Вывод: RT показывает погоду?

Вывод. Не-вер-ный. RT показывает частоту, на генерацию которой запрограммирован PLL. Других вариантов определения частоты нет и быть не может.
Спор длиною уже почти два года Изображение

http://radeon2.ru/ubb/Forum5/HTML/000236.html#11
Unwinder
А как тогда разгонять RivaTunr'ом, если при "СS" = 1, частата памяти за 1100 переваливает???
2taf4u

А постинг прочитать и по ссылке сходить не пробовали? Изображение
2taf4u
См. выше как...
Опять же, подбор прошивки от других карт позволяет добиться абсолютно тех же результатов без изменения "cas" и с большей прибавкой в скорости. Так что, все полезное для разгона памяти сидит в другом месте
2taf4u
частата памяти за 1100 переваливает

LOL! Изображение Перечитай постинг Unwinder'а.
Новая тема    Ответить  [ Сообщений: 44 ]  На страницу 1, 2  След.


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Удалить cookies конференции

Пишите нам | Radeon.ru