Перейти к содержимому

Die count 1 что это

  • автор:

Разгон оперативной памяти DDR4 на AMD Ryzen и Intel Core

На github.com кто-то заморочился и сделал полноценный гайд по разгону оперативной памяти DDR4 на Intel и AMD Ryzen. А в качестве базовой информации в дополнении к нашему видео он будет полезен каждому.

Делимся переводом, приятного прочтения.

Подготовка

  1. Проверьте, что ваши модули находятся в рекомендуемых слотах DIMM (обычно 2 и 4).
  2. Перед разгоном памяти убедитесь, что ваш процессор полностью исправен, так как нестабильный процессор может привести к ошибкам памяти. При повышении частоты с жесткими (предельно сокращёнными) таймингами, ваш процессор может начать работать нестабильно.
  3. Убедитесь, что используется актуальная версия UEFI.

Утилиты тестирования памяти

Нужно всегда проводить различные стресс-тесты, чтобы убедиться в стабильности разгона.

Не рекомендуется

Мы бы не советовали тест памяти с помощью AIDA64 и Memtest64, поскольку обе эти утилиты не очень хорошо умеют находить ошибки памяти.

Рекомендуется

TM5 с любым из конфигов ниже:

  1. Конфиг «Extreme» от anta777 (рекомендую). Убедитесь, что конфиг загрузился: должно быть написано ‘Customize: Extreme1 @anta777’.
  2. Ссылка на сборку TM5 с множеством конфигов.
  3. Конфиг LMHz Universal 2
  4. Если возникают проблемы с аварийным завершением всех потоков при запуске с экстремальным конфигом, может помочь изменение строки «Testing Window Size (Mb)=1408». Измените значение размера окна на значение, вычисленное путём деления общего количества оперативной памяти (за вычетом некоторого запаса для Windows) на количество доступных потоков процессора (например, 12800/16 = 800 Мб на поток).

OCCT, имеющая отдельный тест памяти с использованием инструкций SSE или AVX.

  • Обратите внимание, что AVX и SSE могут различаться по скорости обнаружения ошибок. В системах на базе Intel, для тестирования напряжения IMC лучше подходит SSE, а AVX – для напряжения DRAM.
  • Тест Large AVX2 CPU – это отличный тест стабильности для вашего процессора и оперативной памяти одновременно. Чем сильнее вы разгоняете свою оперативную память, тем сложнее будет добиться стабильности в этом тесте.
Альтернативные варианты
  1. Установите WSL и Ubuntu.
  2. В командной строке Ubuntu (bash shell) введите: sudo apt update
  3. Далее: sudo apt-get install stressapptest
  4. Чтобы приступить к тестированию: stressapptest -M 13000 -s 3600 -W --pause_delay 3600, где -M это объём тестируемой памяти (в Мб); -s это время тестирования (в секундах), --pause_delay — это время задержки (сек) между скачками напряжения. Чтобы пропустить тесты на скачки напряжения, это значение следует установить таким же, как и -s.
  1. В папке с y-cruncher.exe создайте новый файл с именем memtest.cfg и вставьте в него эти настройки, и сохраните.
  2. Создайте ярлык на y-cruncher.exe и добавьте в нем параметры запуска pause:1 config memtest.cfg. Путь запуска в ярлыке должен у вас выглядеть примерно так:

"c:\y-cruncher\y-cruncher.exe" pause:1 config memtest.cfg

Prime95 – метод ‘large FFTs’ также хорошо справляется с поиском ошибок памяти.

Мы использовали пользовательский диапазон FFT 800k — 800k, но любое значение FFT внутри диапазона large FFTs должно работать.

  • Убедитесь, что не стоит флажок ‘Run FFTs in-place’.
  • В файле prime.txt добавьте строку TortureAlternateInPlace=0 под TortureWeak, чтобы предотвратить in-place тестирование программой. In-place означает, что будет использоваться одна и та же небольшая область RAM, а это не то, что нам нужно.

Можно создать ярлык к prime95.exe, добавив -t к параметрам запуска, чтобы тестирование запускалось сразу при запуске, используя настройки из prime.txt.

Строка запуска объекта в ярлыке будет выглядеть примерно так:

Ещё можно изменить рабочий каталог файлов конфигурации Prime95, чтобы удобней было работать с разными конфигами – например, один для стресс-теста CPU, а другой для стресс-теста RAM.

  1. В папке с prime95.exe создайте ещё одну папку. Назовём её, к примеру, “RAM” (без кавычек).
  2. Скопируйте в неё файлы prime.txt и local.txt.
  3. Отредактируйте prime.txt, выставив необходимые значения настроек.
  4. Создайте второй ярлык к prime95.exe, добавив к параметрам запуска -t -W. У нас это так будет выглядеть: "c:\prime95\prime95.exe" -t -WRAM
  5. Теперь мы можем использовать этот ярлык для мгновенного запуска Prime95 с заданными настройками.

randomx-stress – полезен для тестирования стабильности FCLK.

Сравнение

Здесь сравнили между собой Karhu RAMTest, TM5 с экстрим-конфигом и GSAT.

TM5 – самый быстрый и самый «стрессовый», хотя у меня были случаи, когда я успешно проходил получасовые стресс-тесты TM5, но не проходил 10-минутные Karhu. И у другого пользователя было похожее. Но у всех по-разному может быть.

Работа и настройка таймингов

Утилиты для просмотра таймингов в Windows:

Intel:

  • Z370(?)/Z390: Asrock Timing Configurator v4.0.4 (работает с большинством сторонних материнских плат).
  • Z170/Z270(?)/Z490, а также материнки EVGA: Asrock Timing Configurator v4.0.3.
  • Для Rocket Lake: Asrock Timing Configurator v4.0.10

Бенчмарки (тест производительности)

  • AIDA64 – бесплатная 30-дневная пробная версия. Мы будем использовать тесты кэша и памяти (находятся в разделе Tools), чтобы посмотреть, как работает наша память. Щёлкнув правой кнопкой по кнопке запуска теста, можно выбрать запуск только тестов памяти, пропустив тесты кэша.
  • Intel Memory Latency Checker – содержит множество полезных тестов для измерения производительности памяти. У него более обширный сбор данных, чем у AIDA64, и значения пропускной способности у тестов отличаются. Обратите внимание, что его необходимо запускать от имени администратора, чтобы отключить префетчинг. На системах AMD может потребоваться отключить его в BIOS.
  • xmrig – очень чувствителен к памяти, поэтому его полезно использовать для проверки влияния определенных таймингов. Запустите от имени администратора с параметром —bench=1M в качестве аргумента командной строки, чтобы запустить бенчмарк. Используйте контрольное время (benchmark time) для сравнения.
  • MaxxMEM2 – бесплатная альтернатива AIDA64, но тесты пропускной способности выглядят намного слабее, поэтому полностью сравнивать с AIDA64 не стоит.
  • Super Pi Mod v1.5 XS – еще одна чувствительная к памяти бенчмарк-утилита, но я не использовал её так часто, как AIDA64. 1-8M значений [после запятой при вычислении числа π] будет вполне достаточно для быстрого теста. Вам лишь нужно посмотреть на последнее (общее) время, которое чем меньше, тем лучше.
  • HWBOT x265 Benchmark – говорят, эта утилита также хорошо тестирует память, но я сам лично ей не пользовался.
  • PYPrime 2.x – этот бенчмарк работает быстро и отлично сонастраивается с тактовой частотой ядра процессора, кэшем/FCLK, частотой памяти и таймингами.

Общая информация о RAM

Соотношение частот и таймингов

Частота оперативной памяти измеряется в мегагерцах (МГц) или миллионах циклов в секунду. Более высокая частота означает большее количество циклов в секунду, что означает более высокую производительность.

Многие ошибочно полагают, что частота оперативной памяти DDR4-3200 – 3200 МГц, однако на самом деле реальная частота памяти составляет всего 1600 МГц. Поскольку в памяти DDR (Double Data Rate) данные передаются как по нарастающему, так и по спадающему фронту тактового сигнала, реальная частота оперативной памяти равна половине количества транзакций в секунду. DDR4-3200 передает 3200 миллионов битов в секунду, а значит, 3200 МТ/с (МегаТранзакций в секунду) работает на частоте 1600 МГц.

Тайминги RAM измеряются в тактовых циклах или тиках. Более низкие тайминги означают меньшее количество циклов, необходимых для выполнения операции, что означает более высокую производительность. Исключением является tREFI – интервал обновления. Как следует из названия, tREFI (timeREFresh Interval) – это время между обновлениями. Пока оперативная память обновляется, она ничего не может делать, поэтому мы бы хотели обновлять ее как можно реже. Для этого время между обновлениями должно быть как можно больше. Это означает, что tREFI должен быть как можно выше.

Несмотря на то, что тайминги могут быть и низкими, производительность также зависит от частоты, на которой работает оперативная память. Например, DDR4-3000 CL15 и DDR4-3200 CL16 обладают одинаковой латентностью, несмотря на то, что у DDR4-3000 значение CL меньше. Это объясняется тем, что более высокая частота компенсирует увеличение CL.

Формула для вычисления фактического времени задержки (в наносекундах, нс) заданного тайминга выглядит так: 2000 * тайминг / ddr_speed.

  • DDR4-3000 с CL15 это 2000 * 15 / 3000 = 10ns
  • DDR4-3200 с CL16 это 2000 * 16 / 3200 = 10ns

Первостепенные, второстепенные и третьестепенные тайминги

Тайминги оперативной памяти делятся на 3 категории: первостепенные (primary), второстепенные (secondary) и третьестепенные (tertiary). Они обозначаются буквами ‘P’, ‘S’ и ‘T’ соответственно.

  • Первостепенные и второстепенные тайминги влияют на латентность и пропускную способность;
  • Третьестепенные – только на пропускную способность. Исключением является tREFI/tREF, который влияет и на пропускную способность, и на латентность. Кстати, на AMD его модифицировать нельзя.

Ожидания и ограничения

В этом разделе рассматриваются 3 компонента, влияющие на процесс разгона: микросхемы (чипы памяти), материнская плата и встроенный контроллер памяти (IMC).

Материнская плата

Самые высокие частоты достигаются на материнских платах с 2-мя слотами DIMM.

На материнских платах с 4-мя слотами DIMM максимальная частота памяти зависит от количества установленных планок.

  • На материнских платах, работающих с цепочечной (daisy-chain) микроархитектурой RAM, лучше использовать 2 планки памяти. Использование 4-х планок может существенно снизить максимальную частоту памяти.
  • Платы же с Т-образной топологией, напротив, наилучшие показатели при разгоне обеспечат с 4-мя планками. А использование 2-х планок не столь существенно повлияет на максимальную частоту памяти, как использование 4-х на daisy-chain (?).
  • Большинство поставщиков не указывают используемую топологию, но её можно «вычислить» на основе прилагаемого к материнской плате списка совместимых устройств (QVL – Qualified Vendor List). Например, Z390 Aorus Master, вероятно, использует Т-топологию, поскольку наибольшая частота демонстрируется с использованием 4-х модулей DIMM. Если же максимальная частота демонстрируется на 2-х модулях DIMM, то, вероятно, используется топология daisy-chain.
  • По словам известного оверклокера buildzoid’а, разница между Т-образной и цепочечной топологиями проявляет себя только на планках выше DDR4-4000. То есть, по логике buildzoid’а, если у вас Ryzen 3000, то топология значения не имеет, поскольку DDR4-3800 – как правило, максимум для частоты памяти при соотношении MCLK:FCLK 1:1.

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

Чипы памяти

Разогнать свою оперативную память можно и не вдаваясь в подробности особенностей чипов. Однако, зная, на каких микросхемах построена ваша RAM, можно понять, чего от неё ожидать.

Отчёты Thaiphoon Burner

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

Hynix CJR 8 Гб (одноранговая)

Micron Revision E 8 Гб (одноранговая)

  • Отбракованные низкосортные чипы Micron реализует под брендом SpecTek.
  • Многие стали называть этот чип “Micron E-die” или даже просто “E-die”. Если в первом случае ещё куда ни шло, то во втором уже возникает путаница, поскольку подобная маркировка («буква-die») используется у микросхем Samsung, например – “4 Гб Samsung E-die”. Под “E-die” обычно подразумевается чип Samsung, поэтому стоит уточнять производителя, говоря о чипах Micron Rev. E как об “E-die”.

Samsung B-die 8 Гб (двуранговая).

Наклейки на модулях

Поскольку отчет Thaiphoon может содержать некорректную информацию о микросхемах либо не содержать её вовсе, можно сверить его данные с информацией, указанной на наклейках у некоторых модулей. В настоящее время такую информацию, позволяющую идентифицировать тип микросхем, указывают только на планках Corsair, G.Skill и Kingston.

Corsair: код номера версии (Version Number)

Трёхзначный код номера версии у Корсаров поможет нам определить тип используемых микросхем.

Первая цифра – производитель:

  • 3 = Micron
  • 4 = Samsung
  • 5 = Hynix
  • 8 = Nanya

Вторая цифра – объём памяти.

  • 1 = 2 Гб
  • 2 = 4 Гб
  • 3 = 8 Гб
  • 4 = 16 Гб

Третья цифра – вариант модификации (Revision).

Полный список смотрите здесь

G.Skill: код «042»

G.Skill использует код, начинающийся с 042. Он также содержит искомую информацию о чипах

Давайте расшифруем такой код: 04213X8810B

  • Первое из выделенных жирным значений – это объём. 4 = 4 Гб, 8 = 8 Гб, а 16 Гб кодируется буквой S.
  • Второе выделенное значение кодирует производителя. 1 = Samsung, 2 = Hynix, 3 = Micron, 4 = PSC (Powerchip Semiconductors Corp), 5 = Nanya и 9 = JHICC.
  • Третье выделенное значение – вариант модификации (Revision).
  • Итак, мы получили Samsung 8 Гб B-die.

Полный список смотрите здесь.

Kingston

Код Kingston имеет такой вид: DPMM16A1823

  • Под выделенной жирным буквой закодирован производитель. H = Hynix, M = Micron и S = Samsung.
  • Следующие две цифры информируют нас о количестве рангов. 08 = одноранговая, 16 = двуранговая.
  • Затем идёт месяц изготовления. 1-9, A, B, C.
  • И следующие 2 цифры – год изготовления.
  • Итак, в нашем примере мы имеем двуранговую память на чипах Micron, произведённую в октябре 2018.
О рангах и объёме

Одноранговые модули обычно работают на более высоких частотах, чем двуранговые, но в зависимости от типа теста, двуранговые модули могут достигать довольно значительного превосходства в скорости по сравнению с одноранговыми благодаря приросту производительности за счет чередования рангов*. Это можно наблюдать как в синтетических тестах, так и в играх.

  • На новейших платформах (таких как Comet Lake и Zen3) поддержка двуранговой памяти в BIOS и контроллерах памяти значительно улучшилась. На многих платах Z490 двуранговая Samsung 8 Гб B-die (2×16 Гб) будет работать столь же быстро, как и одноранговая B-die, то есть вы получаете весь прирост производительности от чередования рангов практически без недостатков.
  • * Чередование рангов позволяет контроллеру памяти распараллеливать запросы к памяти, например, записывать данные на один ранг, пока другой обновляется. Этот эффект легко можно наблюдать при анализе пропускной способности на тесте копирования в AIDA64. С точки зрения контроллера памяти, не имеет значения, находится ли второй ранг на том же DIMM (два ранга на одном DIMM) или на другом DIMM (два DIMM на одном канале). Однако это имеет значение с точки зрения разгона, когда нужно учитывать особенности топологии и требования BIOS.
  • Наличие второго ранга также означает, что доступно в два раза больше групп банков. Из этого следует, что короткие (S) тайминги, такие как RRD_S, могут использоваться чаще, так как вероятность того, что будет доступна свободная группа банков, выше. Длинный (L) тайминг – к примеру, RRD_L – требуется, если приходится обращаться к одной и той же группе банков дважды по очереди, но когда вместо трех альтернативных банковских групп в распоряжении имеется 7, гораздо больше шансов избежать очередей.
  • Это также означает, что поскольку банков в два раза больше, то в любой момент времени может быть открыто в два раза больше строк памяти. Вероятность того, что нужная вам строка будет открыта – больше. Не придется так часто закрывать строку A, открывать строку B, а затем закрывать B, чтобы снова открыть A. Вы реже задерживаетесь на таких операциях, как RAS/RC/RCD (когда ждете повторного открытия закрытой строки) и RP (когда ждете закрытия строки, чтобы открыть другую).
  • Конфигурации с 16-разрядными чипами (x16) имеют вдвое меньше банков и групп банков по сравнению с традиционными конфигурациями x8, что означает меньшую производительность.

Объем важен при определении того, насколько можно разогнать память. К примеру, AFR 4 Гб и AFR 8 Гб разгоняться будут по-разному, несмотря на то, что называются одинаково. То же можно сказать и о Micron Rev. B, которые существует в вариантах 8 и 16 Гб. Микросхемы 16 Гб разгоняются лучше и продаются как в 16-гигабайтных модулях, так и в 8-гигабайтных, при этом в обоих случаях модули DIMM имеют по 8 чипов. Просто у 8-гигабайтных версий планок отредактирован SPD, и примером такого подхода являются топовые комплекты Crucial Ballistix (BLM2K8G51C19U4B).

С увеличением общего числа задействованных в системе рангов, возрастает и нагрузка на контроллер памяти. Обычно это означает необходимость увеличения питания, особенно напряжения VCCSA на Intel и SOC на AMD.

Масштабирование напряжения

Масштабирование напряжения попросту означает, как чип реагирует на изменение напряжения.

Во многих микросхемах tCL масштабируется с напряжением, что означает, что увеличение напряжения может позволить вам снизить tCL. В то время как tRCD и tRP на большинстве микросхем, как правило, не масштабируются с напряжением, а это означает, что независимо от того, какое напряжение вы подаёте, эти тайминги не меняются. Насколько известно, tCL, tRCD, tRP и, возможно, tRFC могут (либо не могут) видеть масштабирование напряжения.

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

Масштабирование напряжения CL11:

  • На графике видно, что tCL у CJR 8 Гб масштабируется с напряжением почти ровно до DDR4-2533.
  • У Samsung B-die мы видим идеально-ровное масштабирование tCL с напряжением.
  • Столь же ровное масштабирование tCL с напряжением наблюдается у Micron Rev. E.
  • Мы использовали эти данные в калькуляторе. Изменяя ползунки f и v на нужные нам частоту и напряжение, калькулятор вычисляет частоты и напряжения, достижимые при заданном CL (предполагается, что CL линейно масштабируется до 1,50 В). Например, DDR4-3200 CL14 при напряжении 1,35 В может работать как ~DDR4-3333 CL14 при 1,40 В, ~DDR4-3533 CL14 при 1,45 В и DDR4-3733 CL14 при 1,50 В.

Масштабирование напряжения tRFC у B-die.

Видно, что tRFC довольно хорошо масштабируется на B-die.

Некоторые старые чипы Micron (до 8 Гб Rev. E) известны своим отрицательным масштабированием с напряжением. То есть при повышении напряжения (как правило, выше 1,35 В) они становятся нестабильными на тех же таймингах и частоте.

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

Чип tCL tRCD tRP tRFC
Hynix 8 Гб AFR Да Нет Нет ?
Hynix 8 Гб CJR Да Нет Нет Да
Hynix 8 Гб DJR Да Нет Нет Да
Micron 8 Гб Rev. B Да Нет Нет Нет
Micron 8 Гб Rev. E Да Нет Нет Нет
Micron 16 Гб Rev. B Да Нет Нет Нет
Nanya 8 Гб B-die Да Нет Нет Нет
Samsung 4 Гб E-die Да Нет Нет Нет
Samsung 8 Гб B-die Да Да Да Да
Samsung 8 Гб D-die Да Нет Нет Нет

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

Ожидаемая максимальная частота

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

Чип Ожидаемая максимальная частота(МТ/с)
Hynix 8 Гб AFR 3600
Hynix 8 Гб CJR 4133*
Hynix 8 Гб DJR 5000+
Nanya 8 Гб B-die 4000+
Micron 8 Гб Rev. B 3600
Micron 8 Гб Rev. E 5000+
Micron 16 Гб Rev. B 5000+
Samsung 4 Гб E-die 4200+
Samsung 8 Гб B-die 5000+
Samsung 8 Гб D-die 4200+
  • * – результаты тестирования CJR получился несколько противоречивыми. Тестировали 3 одинаковых планки RipJaws V 3600 CL19 8 Гб. Одна из них работала на частоте DDR4-3600, другая – на DDR4-3800, а последняя смогла работать на DDR4-4000. Тестирование проводилось на CL16 с 1,45 В.
  • Не ждите, что одинаковые, но разнородные по качеству, чипы производителя одинаково хорошо разгонятся. Это особенно справедливо для B-die.
  • Указанные значения следует понимать как усредненные возможности чипа, не забывая о других факторах, существенно влияющих на достижимость этих показателей, таких как материнская плата и процессор.
Биннинг

Суть биннинга заключается в разделении производителем полученной на выходе продукции «по сортам», качеству. Как правило, сортировка производится по демонстрируемым при тестировании характеристикам производительности.

Чипы, показывающие одну частоту, производитель отделяет в одну «коробку», другую частоту – в другую «коробку». Отсюда и название процедуры – “binning” (bin – ящик, коробка). Подробно об этом писали в статье: «Что такое биннинг? В погоне за лучшими чипами».

G.Skill – один из производителей, известных своим развитым биннингом и категоризацией. Нередко несколько различных товарных позиций G.Skill входят в один и тот же заводской бин (например, DDR4-3600 16-16-16-36 1,35 В B-Die входит в тот же бин, что и DDR4-3200 14-14-14-34 1,35 В B-Die).

B-die из коробки «DDR4-2400 15-15-15» намного хуже чем из коробки «DDR4-3200 14-14-14» или даже из «DDR4-3000 14-14-14». Так что не ждите, что третьесортный B-die даст образцовые показатели масштабирования напряжения.

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

Просто разделите частоту на этот тайминг, и чем выше значение, тем выше качество чипа.

Например, Crucial Ballistix DDR4-3000 15-16-16 и DDR4-3200 16-18-18 оба на чипах Micron Rev. E. Если мы разделим частоту на масштабируемый с напряжением тайминг tCL, мы получим одинаковое значение (200). Значит ли это, что обе планки – одного сорта? Нет.

А вот tRCD не масштабируется с напряжением, значит его необходимо увеличивать по мере увеличения частоты.

3000/16 = 187,5 против 3200/18 = 177,78.

Как видите, DDR4-3000 15-16-16 более качественный чип, нежели DDR4-3200 16-18-18. Это означает, что чипы DDR4-3000 15-16-16 очевидно смогут работать и как DDR4-3200 16-18-18, а вот смогут ли DDR4-3200 16-18-18 работать как DDR4-3000 15-16-16 – не факт. В этом примере разница в частоте и таймингах невелика, так что разгон этих планок будет, скорее всего, очень похожим.

Максимальное рекомендованное повседневное напряжение

Спецификация JEDEC JESD79-4B указывает (стр. 174), что абсолютный максимум составляет 1,50 В

  • Напряжения, превышающие приведенные в разделе «Абсолютные максимальные значения», могут привести к выходу устройства из строя. Это только номинальная нагрузка, и функциональная работа устройства при этих или любых других условиях выше тех, которые указаны в соответствующих разделах данной спецификации, не подразумевается. Воздействие абсолютных максимальных номинальных значений в течение длительного периода может повлиять на надежность.

В соответствии со спецификацией DDR4, это значение является официальным максимумом, на который должна быть рассчитана вся DDR4 память, однако многие микросхемы не способны справиться с такими высокими напряжениями длительное время. Samsung 8 Гб C-die может деградировать уже при напряжении всего 1,35 В, несмотря на соблюденные условия по тепловому режиму и качеству питания. С другой стороны, такие чипы как Hynix 8 Гб DJR или Samsung 8 Гб B-Die, выдерживают ежедневное напряжение, значительно превышающее 1,55 В. Выясните, какие напряжения безопасны именно для вашего чипа, либо же придерживайтесь напряжения в районе 1,35 В. И не забывайте про «кремниевую лотерею», то есть всё в определённой степени индивидуально. Будьте осторожны.

Одним из общих факторов, ограничивающих максимальное безопасное напряжение, с которым вы можете работать, является архитектура вашего процессора. Согласно JEDEC, VDDQ – напряжение вывода данных, – привязано к VDD, в просторечии называемому VDIMM или напряжением DRAM. Это напряжение взаимодействует с PHY (физическим уровнем) в CPU, и может привести к длительной деградации IMC, если установлено слишком высокое значение. Поэтому не рекомендуется повседневное использование напряжения VDIMM выше 1,60 В на Ryzen 3000 и 5000 или 1,65 В на процессорах Intel серии Comet Lake. Будьте осторожны, поскольку деградацию PHY у процессора измерить или заметить трудно, пока проблема не станет серьезной.

Для продуктов с заявленным напряжением 1,60 В вероятно безопасно использовать повседневное напряжение 1,60 В. Также, B-Die, 8 Гб Rev. E, DJR и 16 Гб Rev. B должны нормально работать с повседневным напряжении 1,60 В, при условии активного воздушного охлаждения. Повышение напряжения приводит к повышению тепловыделения, а высокая температура сама по себе снижает порог безопасного напряжения.

Ранговость

Ниже показано, как самые распространенные чипы ранжируются с точки зрения частоты и таймингов.

Оценка Чипы Описание
S Samsung 8 Гб B-Die Лучший DDR4 чип для универсальной производительности
A Hynix 8 Гб DJR, Micron 8 Гб Rev. E*, Micron 16 Гб Rev. B Высокопроизводительные чипы. Известны тем, что не холостят на степпингах (‘clockwall’) и обычно хорошо масштабируются с напряжением.
B Hynix 8 Гб CJR, Samsung 4 Гб E-Die, Nanya 8 Гб B-Die Чипы высокого класса, способные работать на высоких частотах с хорошими таймингами.
C Hynix 8 Гб JJR, Hynix 16 Гб MJR, Hynix 16 Гб CJR, Micron 16 Гб Rev. E, Samsung 8 Гб D-Die Достойные чипы с хорошей производительностью и неплохим масштабированием по частоте.
D Hynix 8 Гб AFR, Micron 8 Гб Rev. B, Samsung 8 Гб C-Die, Samsung 4 Гб D-Die Микросхемы низкого класса, обычно встречающиеся среди дешевых предложений. Большинство из них сняты с производства и более не актуальны.
F Hynix 8 Гб MFR, Micron 4 Гб Rev. A, Samsung 4 Гб S-Die, Nanya 8 Гб C-Die Плохие чипы, неспособные уверенно дотянуть даже до требований базовой спецификации JEDEC.
  • Частично на основе оценок Buildzoid, но из-за давности его публикации, некоторые чипы не включены в наш список.
  • Модификации ревизии 8 Гб Rev. E в основном различаются по минимально-достижимому tRCD и максимально-достижимой скорости без изменения VTT, с сохранением стабильности. Как правило, более новые редакции 8 Гб Rev. E (C9BKV, C9BLL и т.д.) обеспечивают более короткий tRCD и более высокую тактовую частоту без изменения VTT.
Температура и её влияние на стабильность

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

Тайминги tRFC очень сильно зависят от температуры, поскольку они связаны с утечкой конденсатора, вызванной температурой. При повышении температуры требуются более высокие значения tRFC. tRFC2 и tRFC4 – это тайминги, которые активируются, когда рабочая температура DRAM достигает 85°C. Ниже этих температур эти тайминги ничего не делают.

B-Die чувствительны к температуре, их идеальный диапазон ~30-40°C. Некоторые экземпляры могут выдерживать и больше, это уж как повезёт. В свою очередь Rev. E, похоже, к температуре не столь чувствителен.

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

Встроенный контроллер памяти (IMC)

Intel: LGA1151

IMC Skylake от Intel достаточно устойчивый, поэтому при разгоне он не должен быть узким местом. Ну а чего ещё ждать от 14+++++ нм?

IMC Rocket Lake, если не считать ограничений, касающихся поддержки памяти Gear 1 и Gear 2, имеет самый сильный контроллер памяти среди всех потребительских процессоров Intel, причем с большим отрывом.

Для разгона RAM необходимо изменить два напряжения: System Agent (VCCSA) и IO (VCCIO). НЕ оставляйте их в режиме “Auto”, так как они могут подать опасные уровни напряжения на IMC, что может ухудшить его работу или даже спалить его. Большую часть времени можно держать VCCSA и VCCIO одинаковыми, но иногда перенапряжение может нанести ущерб стабильности, что видно из скриншота. Я не рекомендовал бы подниматься выше 1,25 В на обоих.

Ниже предлагаемые значения VCCSA и VCCIO для двух одноранговых модулей DIMM:

Мы не рекомендовали бы подниматься выше 1,25 В на обоих.

Ниже – предлагаемые значения VCCSA и VCCIO для двух одноранговых модулей DIMM:

Частота (МГц) VCCSA/VCCIO (В)
3000-3600 1,10 – 1,15
3600-4000 1,15 – 1,20
4000-4200 1,20 – 1,25
4200-4400 1,25 – 1,30

* — Если модулей больше, и/или используются двуранговые модули, то может потребоваться более высокое напряжение VCCSA и VCCIO.

tRCD и tRP взаимосвязаны, то есть, если вы установите tRCD на 16, а tRP на 17, то оба будут работать с более высоким таймингом (17). Это ограничение объясняет, почему многие чипы работают не очень хорошо на Intel и почему для Intel лучше подходит B-die. В UEFI Asrock и EVGA оба тайминга объединены в tRCDtRP. В UEFI ASUS tRP скрыт. В UEFI MSI и Gigabyte tRCD и tRP видны, но попытка установить для них разные значения приведет просто к установке более высокого значения для обоих.

Ожидаемый диапазон латентности памяти: 40-50 нс.

  • Ожидаемый диапазон латентности памяти для Samsung B-Die: 35-45 нс.
  • В целом, латентность варьируется от поколения к поколению из-за разницы в размере кристалла (кольцевой шины). В результате, 9900K будет иметь немного меньшую задержку, чем 10700K при тех же настройках, поскольку у 10700K и 10900K кристаллы одинаковы.
  • Латентность зависит от значений RTL и IOL. Вообще говоря, ориентированные на разгон, да и просто качественные материнки имеют максимально короткие маршруты передачи данных и, соответственно, достаточно низкие RTL и IOL. На некоторых материнских платах изменение RTL и IOL не оказывает никакого влияния.
AMD: AM4
  • MCLK: Master clock, реальная тактовая частота памяти (половина эффективной скорости RAM). Например, для DDR4-3200 частота MCLK равна 1600 МГц.
  • FCLK: Infinity Fabric clock, частота шины Infinity Fabric.
  • UCLK: Unified memory controller (UMC) clock, частота контроллера памяти. Половина частоты MCLK, если MCLK и FCLK не равны (десинхронизированный режим, 2:1).
  • На Zen и Zen+ MCLK = FCLK = UCLK. Однако в Zen2 и Zen3 значение частоты FCLK можно менять. Если MCLK равен 1600 МГц (DDR4-3200) и вы установите FCLK на 1600 МГц, UCLK также будет 1600 МГц, если вы не установите соотношение MCLK:UCLK 2:1 (режим часто называется UCLK DIV MODE, хотя известны и другие названия). Однако, если вы установите FCLK на 1800 МГц, то UCLK будет работать на частоте половины от MCLK – 800 МГц (десинхронизированный режим).
  • В Ryzen 1000 и 2000 IMC несколько привередлив к разгону и может не дать столь же высоких частот, как Intel. IMC Ryzen 3000 и 5000 намного лучше и более-менее наравне с новыми процессорами Intel на базе Skylake, т.е. 9-го и 10-го поколения.
  • SoC voltage – это напряжение для IMC, и, как и в случае с Intel, не рекомендуется оставлять его в “Auto” режиме. Типичный диапазон этого значения 1,0 – 1,1 В. Более высокие значения, как правило, допустимы, и они могут оказаться необходимы для стабилизации памяти большого объёма, а также могут помочь стабилизировать FCLK.
  • С другой стороны, неоправданно высокое напряжение SoC может наоборот дестабилизировать память. Такое обычно происходит между 1,15 В и 1,25 В на большинстве процессоров Ryzen.

На разных процессорах контроллер памяти ведет себя по-разному. Большинство процессоров будут работать на частоте DDR4-3466 и выше при напряжении SoC 1,05 В, однако разница заключается в том, как разные процессоры реагируют на напряжение. Одни выглядят масштабируемыми с повышенным напряжением SoC, в то время как другие просто отказываются масштабироваться или вовсе демонстрируют отрицательное масштабирование. Все протестированные экземпляры демонстрировали отрицательное масштабирование при использовании SoC более 1,15 В. Во всех случаях максимальная частота памяти была достигнута при напряжении SoC =< 1.10 В.
Источник: The Stilt

В Ryzen 3000 есть также CLDO_VDDG (часто сокращается до VDDG, чтобы не путать с CLDO_VDDP), которое является напряжением для Infinity Fabric. Напряжение SoC должно быть, по крайней мере, на 40 мВ выше CLDO_VDDG, поскольку CLDO_VDDG формируется из напряжения SoC. В AGESA версии 1.0.0.4 и новее VDDG разделяется на VDDG IOD и VDDG CCD – для связующего кристалла ввода-вывода (I/O Die) и кристалл-чиплетов Сore Сomplex Die, соответственно.

Большинство вольтажей cLDO регулируются с двух главных шин питания процессора. В случае cLDO_VDDG и cLDO_VDDP они регулируются через VDDCR_SoC. Поэтому есть пара правил. Например, если вы установите VDDG на 1,10 В, а фактическое напряжение SoC под нагрузкой у вас составляет 1,05 В, VDDG будет оставаться максимум на ~1,01 В. Аналогично, если вы установили VDDG на 1.10 В и начнете повышать напряжение SoC, ваш VDDG вольтаж будет также повышаться. Точных цифр у меня нет, но можно предположить, что минимальное падение напряжения (Vin-Vout) составляет около 40 мВ. Из чего следует, что ваш ФАКТИЧЕСКИЙ вольтаж SoC должен быть, по крайней мере, на 40 мВ выше желаемого VDDG, чтобы ваша настройка VDDG вступила в силу.
Регулировка напряжения SoC сама по себе, в отличие от других регулировок, мало что даёт вообще. По умолчанию установлено значение 1.10 В, и AMD не рекомендует менять это значение. Увеличение VDDG в некоторых случаях помогает при разгоне матрицы, но не всегда. FCLK 1800 МГц должен быть выполнимым при значении по умолчанию 0,95 В, и для расширения пределов может быть полезно увеличить его до = Источник: The Stilt

Ниже приведены ожидаемые диапазоны частот памяти для двух одноранговых модулей DIMM при условии отсутствия проблем со стороны материнской платы и чипов:

Ryzen Ожидаемая частота (МГц)
1000 3000-3600
2000 3400-3800*
3000 3600-3800 (1:1 MCLK:FCLK)
3800+ (2:1 MCLK:FCLK)
  • Если модулей больше, и/или используются двуранговые модули, ожидаемая частота может быть ниже.
  • * – 3600+ обычно достигается при 1 DIMM на канал (DPC), материнской плате с 2 слотами DIMM и если используются очень хорошие IMC. См. таблицу: https://docs.google.com/spreadsheets/d/1dsu9K1Nt_7apHBdiy0MWVPcYjf6nOlr9CtkkfN78tSo/edit#gid=1814864213
  • * – DDR4-3400…DDR4-3533 – это максимум, если не всё, на что способны IMC Ryzen 2000.
  • Количество протестированных образцов по максимально достижимой частоте памяти распределилось следующим образом: DDR4-3400 – 12.5% образцов; DDR4-3466 – 25.0% образцов; DDR4-3533 – 62.5% образцов
  • Процессоры Ryzen 3000 с двумя CCD-чиплетами (3900X и 3950X) предпочитают 4 одноранговые планки вместо 2 двуранговых. Для моделей с двумя CCD конфигурация «2 одноранговых DIMM на канал», кажется, является наиболее подходящим вариантом. И 3600, и 3700X достигли 1800 МГц UCLK при конфигурации «1 двуранговый DIMM на канал», но в 3900X, скорее всего, из-за рассогласованности двух его CCD, едва удалось достичь 1733 МГц на этой конфигурации. В то время как с двумя однорангами на канал нет никаких проблем в достижении 1866 МГц FCLK/UCLK.

tRCD делится на tRCDRD (чтение) и tRCDWR (запись). Обычно есть возможность уменьшить tRCDWR по отношению к tRCDRD, но я не заметил каких-либо улучшений производительности от понижения tRCDWR. Так что лучше держать их одинаковыми.

Geardown Mode (GDM) автоматически включается на скорости выше DDR4-2666, что обеспечивает четность tCL, четность tCWL, четность tRTP, четность tWR и CR 1T. Если вы хотите выставить нечетный tCL, отключите GDM. При нестабильной работе попробуйте использовать CR 2T, но это может свести на нет прирост производительности за счет снижения tCL, и даже к менее стабильной работе, чем с включенным GDM. К примеру, если вы попытаетесь запустить DDR4-3000 CL15 с включенным GDM, CL будет округлено до 16. В понятиях производительности это выглядит так: GDM откл CR 1T > GDM вкл CR 1T > GDM откл CR 2T.

У процессоров Ryzen 3000 с одним CCD (процессоры серий ниже 3900X) пропускная способность записи вдвое меньше.

Ожидаемый диапазон латентности памяти:

Ryzen Латентность (нс)
1000 65-75
2000 60-70
3000 65-75 (1:1 MCLK:FCLK)
75+ (2:1 MCLK:FCLK)

Достаточно высокий FCLK у Ryzen 3000 и 5000 может компенсировать потери от десинхронизации MCLK и FCLK, при условии, что вы можете назначить MCLK для UCLK.

Разгон

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

Предупреждение: При разгоне оперативной памяти возможно повреждение данных. Рекомендуется периодически проводить проверку целостности системных файлов с помощью sfc /scannow.

Процесс разгона достаточно прост и выполняется в 3 шага:

  • Выставляются очень большие (ослабленные) тайминги.
  • Увеличивается частота DRAM до появления признаков нестабильности.
  • Выставляются оптимально-малые («жесткие», «подтянутые») тайминги.

Нахождение максимальной частот

1. На Intel следует начинать с 1.15В на VCCSA и VCCIO. На AMD с 1.10В SoC

Напряжение SoC может называться по-разному в зависимости от производителя:

  • Asrock: CPU VDDCR_SOC Voltage. Если не можете найти такое, используйте SOC Overclock VID в подменю AMD CBS. Значения VID (Voltage ID);
  • Asus: VDDCR SOC;
  • Gigabyte: (Dynamic) Vcore SOC. Обратите внимание, что Dynamic Vcore SOC это добавочное напряжение. Базовое напряжение изменяется автоматически при увеличении частоты DRAM. Напряжение 0,10 В на DDR4-3000 может привести к фактическому напряжению 1,10 В, а 0,10 В на DDR4-3400 приводит уже к фактическому напряжению 1,20 В;
  • MSI: CPU NB/SOC.

2. Установите напряжение DRAM 1,4 В. Если у вас чипы спотыкаются об 1,35 В, то ставьте 1,35 В.

  • «Спотыкаются» – имеется в виду работают нестабильно при попытках увеличить вольтаж, иногда вплоть до отказа при аппаратном самотестировании (POST).
  • Список чипов, спотыкающихся на 1,35 В включает (но не ограничивается) следующие: 8 Гб Samsung C-die, ранние чипы Micron/SpecTek (до 8 Гб Rev. E).

3. Выставите основные тайминги следующим образом: 16-20-20-40 (tCL-tRCD-tRP-tRAS), а tCWL на 16.

  • Большинству чипов требуется ослабить tRCD и/или tRP, потому я и рекомендую 20.
  • Подробнее об этих таймингах читайте тут (на англ.)

4. Постепенно увеличивайте частоту DRAM до тех пор, пока Windows не откажет. Помните об ожидаемых максимальных частотах, упомянутых выше.

  • На Intel, быстрый способ узнать, нестабильны ли вы, это следить за значениями RTL и IOL. Каждая группа RTL и IOL соответствует каналу. В каждой группе есть 2 значения, которые соответствуют каждому DIMM. Поскольку обе планки стоят во вторых слотах каждого канала, нужно посмотреть на D1 в каждой группе RTL и IOL. Значения RTL у планок не должны разниться между собой более чем на 2, а значения IOL более чем на 1. В нашем случае, RTL разнятся ровно на 2 (53 и 55), а значения IOL не разнятся вовсе (7 у обоих планок). Все значения в пределах допустимых диапазонов, однако имейте в виду, что это ещё не значит, что всё действительно стабильно.
  • На Ryzen 3000 или 5000 – убедитесь, что частота Infinity Fabric (FCLK) установлена равной половине вашей действующей частоты DRAM.

5. Запустите тест памяти на свой выбор.

Windows потребуется около 2 Гб памяти для проведения тестирования, поэтому обязательно учтите это при вводе тестируемого объема ОЗУ, если предусмотрен ручной ввод. У нас 16 Гб RAM, из которых обычно тестируется 14000 Мб.

Минимальные рекомендуемые значения Coverage/Runtime:

  • MemTestHelper (HCI MemTest): 200% на поток.
  • Karhu RAMTest: 5000%. Убедитесь, что на вкладке “Advanced” кэш процессора включен (CPU cache: Enabled). Это ускорит тестирование на ~20%. При охвате тестирования (coverage) 6400% показатель обнаружения ошибок составляет 99,41%, а при длительности 1 час – 98,43% (Источник — раздел Kahru FAQ).
  • TM5 с anta777 Extreme: 3 цикла. Время зависит от тестируемого объёма. Для 16 Гб RAM обычно требуется 1,5-2 часа. Если у вас 32 Гб, можно в 12-й строке конфиг-файла (Time(%)) сократить значение на половину, и у вас получится примерно такое же время выполнения, как и для 16 ГБ.
  • OCCT Memory: по полчаса на тест SSE и на тест AVX.

6. При зависании/краше/BSOD, верните частоту DRAM на ступень ниже и повторите тестирование.

7. Сохраните ваш профиль разгона в UEFI.

8. Теперь вы можете либо попытаться перейти на ещё более высокую частоту, либо начать подтягивать тайминги. Не забывайте об ожидаемых максимальных частотах, о которых мы говорили ранее. Если вы достигли пределов возможностей чипа и/или IMC, то самое время заняться оптимизацией таймингов.

Пробуем повысить частоты

Этот раздел актуален только если вы ещё не достигли пределов возможностей своей материнской платы, чипов и IMC. И он не для тех, у кого проблемы со стабилизацией частот в ожидаемом диапазоне.

Обратите внимание, что некоторые платы имеют автоматические правила, которые могут препятствовать вашему вмешательству. Например, наличие правила tCWL = tCL — 1 может привести к нечетному значению tCWL. Раздел «Дополнительные советы» может помочь вам получить представление конкретно о вашей платформе и функциональности вашей материнской платы.

  • Повысьте вольтажи VCCSA и VCCIO до 1,25 В.
  • Установите командный тайминг (“Command Rate”, CR) на 2T, если ещё не установлен.
  • Поменяйте значение tCCDL на 8. В UEFI Asus’ов нет возможности менять этот тайминг.
  • Рассинхронизация MCLK и FCLK может привести к значительному ухудшению таймингов, поэтому вам лучше не оптимизировать их, чтобы сохранить MCLK:FCLK 1:1. Подробнее об этом см. выше, раздел AMD – AM4.
  • Либо же установите FCLK на стабильное значение (если не уверены, установите на 1600 МГц).

2. Увеличьте основные тайминги до 18-22-22-42, а tCWL до 18.

3. Повысьте вольтаж DRAM до 1,45 В, если чип позволяет.

4. Выполните шаги 4-7 из раздела «Определение исходного уровня».

5. Выполните оптимизацию («подтягивание») таймингов.

Оптимизация таймингов

Обязательно после каждого изменения запускайте тест памяти и бенчмарк-тест, чтобы убедиться в повышении производительности. Мы бы рекомендовали выполнять бенчмарк-тесты 3-5 раз и усреднять результаты, так как тесты памяти могут немного отличаться.

Теоретическая максимальная пропускная способность (Мб/с) = Transfers per clock * Actual Clock * Channel Count * Bus Width * Bit to Byte ratio (Транзакций за такт*фактическая частота*количество каналов*ширина шины*соотношение битов к байтам).

  • Transfers per clock – Передача данных за такт означает количество передач данных (транзакций), которое может произойти за один полный тактовый цикл памяти. В оперативной памяти DDR это происходит дважды за цикл – по нарастающему и спадающему фронтам тактовых импульсов.
  • Actual Clock – фактическая частота памяти, измеряемая в МГц. Обычно эта частота отображается как реальная частота памяти такими программами, как CPU-Z.
  • Channel Count – количество каналов памяти вашего процессора.
  • Bus Width – ширина каждого канала памяти (шины), измеряемая в битах. Начиная с DDR1, это всегда 64 бита.
  • Bit to Byte ratio – соотношение битов к байтам это постоянная величина, равная 1/8 (0,125).
Частота (МГц) Максимальная пропускная способность в двухканальном режиме (Мб/с)
3000 48000
3200 51200
3400 54440
3466 55456
3600 57600
3733 59728
3800 60800
4000 64000

Значения пропускной способности чтения и записи должны составлять 90-98% от теоретической максимальной пропускной способности.

  • На процессорах Ryzen 3000/5000 с одним CCD пропускная способность записи должна составлять 90-98% от половины теоретической максимальной пропускной способности. Можно достичь половины теоретической максимальной пропускной способности записи.
  • Процент теоретически максимальной пропускной способности обратно пропорционален большинству таймингов памяти. Другими словами, по мере сокращения таймингов оперативной памяти, этот процент будет увеличиваться.

1. Мы бы рекомендовали для начала подтянуть некоторые второстепенные тайминги в соответствии с таблицей ниже, поскольку они могут ускорить тестирование памяти.

Надёжно (Safe)

Оптимально (Tight)

Предельно (Extreme)

  • Минимальное значение, при котором снижение tFAW возымеет эффект на производительность RAM, должно равняться 4-х кратному значению tRRDS либо tRRDL – в зависимости от того, какой из них меньше.
  • Необязательно, чтобы все тайминги выставлялись в одном пресете. Вы, например, можете выставить tRRDS tRRDL tFAW в пресете “Tight”, а tWR – в пресете “Extreme”.
  • На некоторых Intel-овских материнских платах tWR в UEFI ничего не делает, вместо него реальный контроль осуществляет tWRPRE (иногда tWRPDEN). Уменьшение tWRPRE на 1 приведет к уменьшению tWR на 1, следуя правилу tWR = tWRPRE — tCWL — 4.

2. Далее идёт tRFC. По умолчанию для чипов 8 Гб установлено значение 350 нс (обратите внимание на единицу измерения).

  • Примечание: Перетягивание tRFC может привести к зависанию/блокировке системы.
  • tRFC – это количество циклов, за которые происходит сброс или перезарядка конденсаторов DRAM. Поскольку разрядка конденсаторов пропорциональна температуре, то для памяти, работающей при высоких температурах, могут потребоваться значительно более высокие значения tRFC.
  • Перевод в нс: 2000*timing/ddr_speed.
  • Перевод из нс (то, что прописывается в UEFI): ns*ddr_speed/2000. Пример: 180 нс на DDR4-3600 = 180*3600/2000 = 324, соответственно в UEFI вам нужно ввести значение 324
  • Ниже приведена таблица типичных значений tRFC в нс для наиболее распространенных чипов:

Чип

tRFC (нс)

Sdram die count 1 что это?

«SDRAM die count 1» означает, что в памяти SDRAM находится один чип (die). Die — это отдельная интегральная схема, которая содержит определенное количество памяти. В данном случае, SDRAM имеет только один чип для хранения данных.

Напишите ответ и заработайте

Вы должны войти или зарегистрироваться, чтобы добавить ответ.

Деньги на новый год и праздники

  • Кредитные карты
  • Быстрые займы

Совкомбанк

Кред. лимит
Проц. ставка
Без процентов
8 800 200-66-96
sovcombank.ru
Лицензия: №963
39 256 заявок

Кред. лимит
Проц. ставка
Без процентов
до 111 дней
8 800 250-0-520
Лицензия: №2268
17 943 заявок

Кред. лимит
Проц. ставка
Без процентов
до 365 дней
8 800 2000 000
alfabank.ru
Лицензия: №1326
12 162 заявок
Смотреть все карты (9)

Сумма займа
Проц. ставка
Срок займа
До 30 дней
Кред. история
8-800-700-8706
27 881 заявок

Сумма займа
Проц. ставка
Срок займа
До 30 дней
Кред. история
8 800 775-54-54
webbankir.com
32 718 заявок

Сумма займа
Проц. ставка
Срок займа
До 168 дней
Кред. история
От 21 года
8-800-7000-197
lime-zaim.ru
16 537 заявок

Что содержится в энергетике?

Спрашивает Александра

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

Фонарь налобный какой лучше?

Спрашивает Александра

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

Что такое пакет подписка?

Спрашивает Александра

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

Iphone 13 pro сколько оперативной памяти?

Спрашивает Александра
IPhone 13 Pro имеет 6 гигабайт оперативной памяти.

Как настроить мою волну в яндекс музыке в браузере?

Спрашивает Александра

Для настройки волны в Яндекс.Музыке в браузере, следуйте этим шагам: 1. Откройте веб-браузер и перейдите на сайт Яндекс.Музыки (music.yandex.ru). 2. Войдите в свою учетную запись, используя свои учетные данные Яндекса или аккаунт социальной сети. 3. После входа в систему вы увидите главную . Читать далее

Как потратить своё время и ресурс SSD впустую? Легко и просто

«Тестировать нельзя диагностировать» – куда бы вы поставили запятую в данном предложении? Надеемся, что после прочтения данного материала вы без проблем можете чётко дать ответ на этот вопрос. Многие пользователи когда-либо сталкивались с потерей данных по той или иной причине, будь то программная или аппаратная проблема самого накопителя или же нестандартное физическое воздействие на него, если вы понимаете, о чём мы. Но именно о физических повреждениях сегодня речь и не пойдёт. Поговорим мы как раз о том, что от наших рук не зависит. Стоит ли тестировать SSD каждый день/неделю/месяц или это пустая трата его ресурса? А чем их вообще тестировать? Получая определённые результаты, вы правильно их понимаете? И как можно просто и быстро убедиться, что диск в порядке или ваши данные под угрозой?

Тестирование или диагностика? Программ много, но суть одна

На первый взгляд диагностика и подразумевает тестирование, если думать глобально. Но в случае с накопителями, будь то HDD или SSD, всё немного иначе. Под тестированием рядовой пользователь подразумевает проверку его характеристик и сопоставление полученных показателей с заявленными. А под диагностикой – изучение S.M.A.R.T., о котором мы сегодня тоже поговорим, но немного позже. На фотографию попал и классический HDD, что, на самом деле, не случайность…

Так уж получилось, что именно подсистема хранения данных в настольных системах является одним из самых уязвимых мест, так как срок службы накопителей чаще всего меньше, чем у остальных компонентов ПК, моноблока или ноутбука. Если ранее это было связано с механической составляющей (в жёстких дисках вращаются пластины, двигаются головки) и некоторые проблемы можно было определить, не запуская каких-либо программ, то сейчас всё стало немного сложнее – никакого хруста внутри SSD нет и быть не может. Что же делать владельцам твердотельных накопителей?

Программ для тестирования SSD развелось великое множество. Какие-то стали популярными и постоянно обновляются, часть из них давно забыта, а некоторые настолько хороши, что разработчики не обновляют их годами – смысла просто нет. В особо тяжёлых случаях можно прогонять полное тестирование по международной методике Solid State Storage (SSS) Performance Test Specification (PTS), но в крайности мы бросаться не будем. Сразу же ещё отметим, что некоторые производители заявляют одни скорости работы, а по факту скорости могут быть заметно ниже: если накопитель новый и исправный, то перед нами решение с SLC-кешированием, где максимальная скорость работы доступна только первые несколько гигабайт (или десятков гигабайт, если объём диска более 900 ГБ), а затем скорость падает. Это совершенно нормальная ситуация. Как понять объём кеша и убедиться, что проблема на самом деле не проблема? Взять файл, к примеру, объёмом 50 ГБ и скопировать его на подопытный накопитель с заведомо более быстрого носителя. Скорость будет высокая, потом снизится и останется равномерной до самого конца в рамках 50-150 МБ/с, в зависимости от модели SSD. Если же тестовый файл копируется неравномерно (к примеру, возникают паузы с падением скорости до 0 МБ/с), тогда стоит задуматься о дополнительном тестировании и изучении состояния SSD при помощи фирменного программного обеспечения от производителя.

Яркий пример корректной работы SSD с технологией SLC-кеширования представлен на скриншоте:

Те пользователи, которые используют Windows 10, могут узнать о возникших проблемах без лишних действий – как только операционная система видит негативные изменения в S.M.A.R.T., она предупреждает об этом с рекомендацией сделать резервные копии данных. Но вернёмся немного назад, а именно к так называемым бенчмаркам. AS SSD Benchmark, CrystalDiskMark, Anvils Storage Utilities, ATTO Disk Benchmark, TxBench и, в конце концов, Iometer – знакомые названия, не правда ли? Нельзя отрицать, что каждый из вас с какой-либо периодичностью запускает эти самые бенчмарки, чтобы проверить скорость работы установленного SSD. Если накопитель жив и здоров, то мы видим, так сказать, красивые результаты, которые радуют глаз и обеспечивают спокойствие души за денежные средства в кошельке. А что за цифры мы видим? Чаще всего замеряют четыре показателя – последовательные чтение и запись, операции 4K (КБ) блоками, многопоточные операции 4K блоками и время отклика накопителя. Важны все вышеперечисленные показатели. Да, каждый из них может быть совершенно разным для разных накопителей. К примеру, для накопителей №1 и №2 заявлены одинаковые скорости последовательного чтения и записи, но скорости работы с блоками 4K у них могут отличаться на порядок – всё зависит от памяти, контроллера и прошивки. Поэтому сравнивать результаты разных моделей попросту нельзя. Для корректного сравнения допускается использовать только полностью идентичные накопители. Ещё есть такой показатель, как IOPS, но он зависит от иных вышеперечисленных показателей, поэтому отдельно говорить об этом не стоит. Иногда в бенчмарках встречаются показатели случайных чтения/записи, но считать их основными, на наш взгляд, смысла нет.

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

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

На самом деле в зависимости от сценариев работы, параметры нужно подбирать самим. Одно дело – домашние или офисные системы, где используется Windows/Linux/MacOS, а совсем другое – серверные, предназначенные для выполнения определённых задач. К примеру, в серверах, работающих с базами данных, могут быть установлены NVMe-накопители, прекрасно переваривающие глубину очереди хоть 256 и для которых таковая 32 или 64 – детский лепет. Конечно, применение классических бенчмарков, перечисленных выше, в данном случае – пустая трата времени. В крупных компаниях используют самописные сценарии тестирования, например, на основе утилиты fio. Те, кому не требуется воспроизведение определённых задач, могут воспользоваться международной методикой SNIA, в которой описаны все проводимые тесты и предложены псевдоскрипты. Да, над ними потребуется немного поработать, но можно получить полностью автоматизированное тестирование, по результатам которого можно понять поведение накопителя – выявить его сильные и слабые места, посмотреть, как он ведёт себя при длительных нагрузках и получить представление о производительности при работе с разными блоками данных.

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

Теория – хорошо, но давайте вернёмся к реальному положению дел. Как мы уже говорили, важно найти данные о параметрах тестирования производителем именно того накопителя, который вы приобрели. Думаете это всё? Нет, не всё. Многое зависит и от аппаратной платформы – тестового стенда, на котором проводится тестирование. Конечно, эти данные также могут быть указаны в спецификации на конкретный SSD, но так бывает не всегда. Что от этого зависит? К примеру, перед покупкой SSD, вы прочитали несколько обзоров. В каждом из них авторы использовали одинаковые стандартные бенчмарки, которые продемонстрировали разные результаты. Кому верить? Если материнские платы и программное обеспечение (включая операционную систему) были одинаковы – вопрос справедливый, придётся искать дополнительный независимый источник информации. А вот если платы или ОС отличаются – различия в результатах можно считать в порядке вещей. Другой драйвер, другая операционная система, другая материнская плата, а также разная температура накопителей во время тестирования – всё это влияет на конечные результаты. Именно по этой причине получить те цифры, которые вы видите на сайтах производителей или в обзорах, практически невозможно. И именно по этой причине нет смысла беспокоиться за различия ваших результатов и результатов других пользователей. Например, на материнской плате иногда реализовывают сторонние SATA-контроллеры (чтобы увеличить количество соответствующих портов), а они чаще всего обладают худшими скоростями. Причём разница может составлять до 25-35%! Иными словами, для воспроизведения заявленных результатов потребуется чётко соблюдать все аспекты методики тестирования. Поэтому, если полученные вами скоростные показатели не соответствуют заявленным, нести покупку обратно в магазин в тот же день не стоит. Если, конечно, это не совсем критичная ситуация с минимальным быстродействием и провалами при чтении или записи данных. Кроме того, скорости большинства твердотельных накопителей меняются в худшую скорость с течением времени, останавливаясь на определённой отметке, которая называется стационарная производительность. Так вот вопрос: а надо ли в итоге постоянно тестировать SSD? Хотя не совсем правильно. Вот так лучше: а есть ли смысл постоянно тестировать SSD?

Регулярное тестирование или наблюдение за поведением?

Так надо ли, приходя с работы домой, приниматься прогонять в очередной раз бенчмарк? Вот это, как раз, делать и не рекомендуется. Как ни крути, но любая из существующих программ данного типа пишет данные на накопитель. Какая-то больше, какая-то меньше, но пишет. Да, по сравнению с ресурсом SSD записываемый объём достаточно мал, но он есть. Да и функции TRIM/Deallocate потребуется время на обработку удалённых данных. В общем, регулярно или от нечего делать запускать тесты никакого смысла нет. Но вот если в повседневной работе вы начинаете замечать подтормаживания системы или тяжёлого программного обеспечения, установленного на SSD, а также зависания, BSOD’ы, ошибки записи и чтения файлов, тогда уже следует озадачиться выявлением причины возникающей проблемы. Не исключено, что проблема может быть на стороне других комплектующих, но проверить накопитель – проще всего. Для этого потребуется фирменное программное обеспечение от производителя SSD. Для наших накопителей – Kingston SSD Manager. Но перво-наперво делайте резервные копии важных данных, а уже потом занимайтесь диагностикой и тестированием. Для начала смотрим в область SSD Health. В ней есть два показателя в процентах. Первый – так называемый износ накопителя, второй – использование резервной области памяти. Чем ниже значение, тем больше беспокойства с вашей стороны должно быть. Конечно, если значения уменьшаются на 1-2-3% в год при очень интенсивном использовании накопителя, то это нормальная ситуация. Другое дело, если без особых нагрузок значения снижаются необычно быстро. Рядом есть ещё одна область – Health Overview. В ней кратко сообщается о том, были ли зафиксированы ошибки разного рода, и указано общее состояние накопителя. Также проверяем наличие новой прошивки. Точнее программа сама это делает. Если таковая есть, а диск ведёт себя странно (есть ошибки, снижается уровень «здоровья» и вообще исключены другие комплектующие), то можем смело устанавливать.

Если же производитель вашего SSD не позаботился о поддержке в виде фирменного софта, то можно использовать универсальный, к примеру – CrystalDiskInfo. Нет, у Intel есть своё программное обеспечение, на скриншоте ниже – просто пример 🙂 На что обратить внимание? На процент состояния здоровья (хотя бы примерно, но ситуация будет понятна), на общее время работы, число включений и объёмы записанных и считанных данных. Не всегда эти значения будут отображены, а часть атрибутов в списке будут видны как Vendor Specific. Об этом чуть позже.

А вот яркий пример уже вышедшего из строя накопителя, который работал относительно недолго, но потом начал работать «через раз». При включении система его не видела, а после перезагрузки всё было нормально. И такая ситуация повторялась в случайном порядке. Главное при таком поведении накопителя – сразу же сделать бэкап важных данных, о чём, правда, мы сказали совсем недавно. Но повторять это не устанем. Число включений и время работы – совершенно недостижимые. Почти 20 тысяч суток работы. Или около 54 лет…

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

Добавить можно ещё вот что. Некоторые пользователи по привычке или незнанию используют давно знакомый им софт, которым производят мониторинг состояния классических жёстких дисков (HDD). Так делать настоятельно не рекомендуется, так как алгоритмы работы HDD и SSD разительно отличаются, как и набор команд контроллеров. Особенно это касается NVMe SSD. Некоторые программы (например, Victoria) получили поддержку SSD, но их всё равно продолжают дорабатывать (а доработают ли?) в плане корректности демонстрации информации о подключённых носителях. К примеру, прошло лишь около месяца с того момента, как показания SMART для SSD Kingston обрели хоть какой-то правильный вид, да и то не до конца. Всё это касается не только вышеупомянутой программы, но и многих других. Именно поэтому, чтобы избежать неправильной интерпретации данных, стоит пользоваться только тем софтом, в котором есть уверенность, – фирменные утилиты от производителей или же крупные и часто обновляемые проекты.

Присмотр за каждой ячейкой – смело. Глупо, но смело

Некоторые производители реализуют в своём программном обеспечении возможность проверки адресов каждого логического блока (LBA) на предмет наличия ошибок при чтении. В ходе такого тестирования всё свободное пространство накопителя используется для записи произвольных данных и обратного их считывания для проверки целостности. Такое сканирование может занять не один час (зависит от объёма накопителя и свободного пространства на нём, а также его скоростных показателей). Такой тест позволяет выявить сбойные ячейки. Но без нюансов не обходится. Во-первых, по-хорошему, SSD должен быть пуст, чтобы проверить максимум памяти. Отсюда вытекает ещё одна проблема: надо делать бэкапы и заливать их обратно, что отнимает ресурс накопителя. Во-вторых, ещё больше ресурса памяти тратится на само выполнение теста. Не говоря уже о затрачиваемом времени. А что в итоге мы узнаем по результатам тестирования? Варианта, как вы понимаете, два – или будут битые ячейки, или нет. В первом случае мы впустую тратим ресурс и время, а во втором – впустую тратим ресурс и время. Да-да, это так и звучит. Сбойные ячейки и без такого тестирования дадут о себе знать, когда придёт время. Так что смысла в проверки каждого LBA нет никакого.

А можно несколько подробнее о S.M.A.R.T.?

Все когда-то видели набор определённых названий (атрибутов) и их значений, выведенных списком в соответствующем разделе или прямо в главном окне программы, как это видно на скриншоте выше. Но что они означают и как их понять? Немного вернёмся в прошлое, чтобы понять что к чему. По идее, каждый производитель вносит в продукцию что-то своё, чтобы этой уникальностью привлечь потенциального покупателя. Но вот со S.M.A.R.T. вышло несколько иначе.

В зависимости от производителя и модели накопителя набор параметров может меняться, поэтому универсальные программы могут не знать тех или иных значений, помечая их как Vendor Specific. Многие производители предоставляют в открытом доступе документацию для понимания атрибутов своих накопителей – SMART Attribute. Её можно найти на сайте производителя.

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

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

(ID 1) Read Error Rate – содержит частоту возникновения ошибок при чтении.

(ID 5) Reallocated Sector Count – количество переназначенных секторов. Является, по сути, главным атрибутом. Если SSD в процессе работы находит сбойный сектор, то он может посчитать его невосполнимо повреждённым. В этом случае диск использует вместо него сектор из резервной области. Новый сектор получает логический номер LBA старого, после чего при обращении к сектору с этим номером запрос будет перенаправляться в тот, что находится в резервной области. Если ошибка единичная – это не проблема. Но если такие сектора будут появляться регулярно, то проблему можно считать критической.

(ID 9) Power On Hours – время работы накопителя в часах, включая режим простоя и всяческих режимов энергосбережения.

(ID 12) Power Cycle Count – количество циклов включения и отключения накопителя, включая резкие обесточивания (некорректное завершение работы).

(ID 170) Used Reserved Block Count – количество использованных резервных блоков для замещения повреждённых.

(ID 171) Program Fail Count – подсчёт сбоев записи в память.

(ID 172) Erase Fail Count – подсчёт сбоев очистки ячеек памяти.

(ID 174) Unexpected Power Off Count – количество некорректных завершений работы (сбоев питания) без очистки кеша и метаданных.

(ID 175) Program Fail Count Worst Die – подсчёт ошибок сбоев записи в наихудшей микросхеме памяти.

(ID 176) Erase Fail Count Worst Die – подсчёт ошибок сбоев очистки ячеек наихудшей микросхемы памяти.

(ID 178) Used Reserved Block Count worst Die – количество использованных резервных блоков для замещения повреждённых в наихудшей микросхеме памяти.

(ID 180) Unused Reserved Block Count (SSD Total) – количество (или процент, в зависимости от типа отображения) ещё доступных резервных блоков памяти.

(ID 187) Reported Uncorrectable Errors – количество неисправленных ошибок.

(ID 194) Temperature – температура накопителя.

(ID 195) On-the-Fly ECC Uncorrectable Error Count – общее количество исправляемых и неисправляемых ошибок.

(ID 196) Reallocation Event Count – количество операций переназначения.

(ID 197) Pending Sector Count – количество секторов, требующих переназначения.

(ID 199) UDMA CRC Error Count – счётчик ошибок, возникающих при передаче данных через SATA интерфейс.

(ID 201) Uncorrectable Read Error Rate – количество неисправленных ошибок для текущего периода работы накопителя.

(ID 204) Soft ECC Correction Rate – количество исправленных ошибок для текущего периода работы накопителя.

(ID 231) SSD Life Left – индикация оставшегося срока службы накопителя на основе количества циклов записи/стирания информации.

(ID 241) GB Written from Interface – объём данных в ГБ, записанных на накопитель.

(ID 242) GB Read from Interface – объём данных в ГБ, считанных с накопителя.

(ID 250) Total Number of NAND Read Retries – количество выполненных попыток чтения с накопителя.

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

Паранойя или трезвый взгляд на сохранность данных?

Как показывает практика, тестирование нужно лишь для подтверждения заявленных скоростных характеристик. В остальном – это пустая трата ресурса накопителя и вашего времени. Никакой практической пользы в этом нет, если только морально успокаивать себя после вложения определённой суммы денег в SSD. Если есть проблемы, они дадут о себе знать. Если вы хотите следить за состоянием своей покупки, то просто открывайте фирменное программное обеспечение и смотрите на показатели, о которых мы сегодня рассказали и которые наглядно показали на скриншотах. Это будет самым быстрым и самым правильным способом диагностики. И ещё добавим пару слов про ресурс. Сегодня мы говорили, что тестирование накопителей тратит их ресурс. С одной стороны – это так. Но если немного подумать, то пара-тройка, а то и десяток записанных гигабайт – не так уж много. Для примера возьмём бюджетный Kingston A400R ёмкостью 256 ГБ. Его значение TBW равно 80 ТБ (81920 ГБ), а срок гарантии – 1 год. То есть, чтобы полностью выработать ресурс накопителя за этот год, надо ежедневно записывать на него 224 ГБ данных. Как это сделать в офисных ПК или ноутбуках? Фактически – никак. Даже если вы будете записывать порядка 25 ГБ данных в день, то ресурс выработается лишь практически через 9 лет. А ведь у накопителей серии A1000 ресурс составляет от 150 до 600 ТБ, что заметно больше! С учётом 5-летней гарантии, на флагман ёмкостью 960 ГБ надо в день записывать свыше 330 ГБ, что маловероятно, даже если вы заядлый игрок и любите новые игры, которые без проблем занимают под сотню гигабайт. В общем, к чему всё это? Да к тому, что убить ресурс накопителя – достаточно сложная задача. Куда важнее следить за наличием ошибок, что не требует использования привычных бенчмарков. Пользуйтесь фирменным программным обеспечением – и всё будет под контролем. Для накопителей Kingston и HyperX разработан SSD Manager, обладающий всем необходимым для рядового пользователя функционалом. Хотя, вряд ли ваш Kingston или HyperX выйдет из строя… На этом – всё, успехов во всём и долгих лет жизни вашим накопителям!

P.S. В случае возникновения проблем с SSD подорожник всё-таки не поможет 🙁

Для получения дополнительной информации о продуктах Kingston обращайтесь на сайт компании.

  • Блог компании Kingston Technology
  • Компьютерное железо
  • Старое железо
  • Настольные компьютеры
  • Ноутбуки

Типы курсоров (драйвер SQLSRV)

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

Типы курсоров

При создании результирующего набора с помощью sqlsrv_query или sqlsrv_prepare можно указать тип курсора. По умолчанию используется курсор последовательного доступа, который позволяет переместить одну строку за раз, начиная с первой строки результирующего набора и до его конца.

Можно создать результирующий набор с прокручиваемым курсором, который позволяет получить доступ к любой строке в результирующем наборе в любом порядке. В следующей таблице перечислены значения, которые можно передать в параметре Scrollable в sqlsrv_query или sqlsrv_prepare.

Параметр Описание
SQLSRV_CURSOR_FORWARD Позволяет переместить одну строку за раз, начиная с первой строки результирующего набора и до его конца.

Это тип курсора по умолчанию.

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

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

Если запрос формирует несколько результирующих наборов, параметр Scrollable применяется ко всем результирующим наборам.

Выбор строк в результирующем наборе

После создания результирующего набора можно использовать sqlsrv_fetch, sqlsrv_fetch_array или sqlsrv_fetch_object, чтобы указать строку.

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

Параметр Описание
SQLSRV_SCROLL_NEXT Задает следующую строку. Это значение по умолчанию, если параметр row для прокручиваемого набора результатов не указан.
SQLSRV_SCROLL_PRIOR Указывает строку перед текущей строкой.
SQLSRV_SCROLL_FIRST Указывает первую строку в результирующем наборе.
SQLSRV_SCROLL_LAST Указывает последнюю строку в результирующем наборе.
SQLSRV_SCROLL_ABSOLUTE Указывает строку, заданную в параметре offset.
SQLSRV_SCROLL_RELATIVE Указывает строку, заданную в параметре offset из текущей строки.

Курсоры на стороне сервера и драйвер SQLSRV

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

 'test' )); if ( $conn === false ) < die( print_r( sqlsrv_errors(), true )); >$stmt = sqlsrv_query( $conn, "DROP TABLE dbo.ScrollTest" ); if ( $stmt !== false ) < sqlsrv_free_stmt( $stmt ); >$stmt = sqlsrv_query( $conn, "CREATE TABLE ScrollTest (id int, value char(10))" ); if ( $stmt === false ) < die( print_r( sqlsrv_errors(), true )); >$stmt = sqlsrv_query( $conn, "INSERT INTO ScrollTest (id, value) VALUES(. )", array( 1, "Row 1" )); if ( $stmt === false ) < die( print_r( sqlsrv_errors(), true )); >$stmt = sqlsrv_query( $conn, "INSERT INTO ScrollTest (id, value) VALUES(. )", array( 2, "Row 2" )); if ( $stmt === false ) < die( print_r( sqlsrv_errors(), true )); >$stmt = sqlsrv_query( $conn, "INSERT INTO ScrollTest (id, value) VALUES(. )", array( 3, "Row 3" )); if ( $stmt === false ) < die( print_r( sqlsrv_errors(), true )); >$stmt = sqlsrv_query( $conn, "SELECT * FROM ScrollTest", array(), array( "Scrollable" => 'keyset' )); // $stmt = sqlsrv_query( $conn, "SELECT * FROM ScrollTest", array(), array( "Scrollable" => 'dynamic' )); // $stmt = sqlsrv_query( $conn, "SELECT * FROM ScrollTest", array(), array( "Scrollable" => 'static' )); $rows = sqlsrv_has_rows( $stmt ); if ( $rows != true ) < die( "Should have rows" ); >$result = sqlsrv_fetch( $stmt, SQLSRV_SCROLL_LAST ); $field1 = sqlsrv_get_field( $stmt, 0 ); $field2 = sqlsrv_get_field( $stmt, 1 ); echo "\n$field1 $field2\n"; $stmt2 = sqlsrv_query( $conn, "delete from ScrollTest where ); // or // $stmt2 = sqlsrv_query( $conn, "UPDATE ScrollTest SET WHERE ); if ( $stmt2 !== false ) < sqlsrv_free_stmt( $stmt2 ); >$result = sqlsrv_fetch( $stmt, SQLSRV_SCROLL_LAST ); $field1 = sqlsrv_get_field( $stmt, 0 ); $field2 = sqlsrv_get_field( $stmt, 1 ); echo "\n$field1 $field2\n"; sqlsrv_free_stmt( $stmt ); sqlsrv_close( $conn ); ?> 

Курсоры на стороне клиента и драйвер SQLSRV

Курсоры на стороне клиента были добавлены как функция в Драйверы Microsoft SQL Server для PHP версии 3.0. Они позволяют кэшировать в памяти весь результирующий набор. Число строк доступно после выполнения запроса при использовании курсора на стороне клиента.

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

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

С помощью драйвера SQLSRV можно настроить размер буфера, содержащего результирующий набор. Для этого нужно задать параметр ClientBufferMaxKBSize для sqlsrv_configure. sqlsrv_get_config возвращает значение ClientBufferMaxKBSize. Можно также задать максимальный размер буфера в файле php.ini с помощью sqlsrv.ClientBufferMaxKBSize (например, sqlsrv.ClientBufferMaxKBSize = 1024).

В примере ниже используется следующее:

  • число строк всегда доступно для курсора на стороне клиента;
  • использование курсоров на стороне клиента и пакетных операторов.
"AdventureWorks"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if ( $conn === false ) < echo "Could not connect.\n"; die( print_r( sqlsrv_errors(), true)); >$tsql = "select * from HumanResources.Department"; // Execute the query with client-side cursor. $stmt = sqlsrv_query($conn, $tsql, array(), array("Scrollable"=>"buffered")); if (! $stmt) < echo "Error in statement execution.\n"; die( print_r( sqlsrv_errors(), true)); >// row count is always available with a client-side cursor $row_count = sqlsrv_num_rows( $stmt ); echo "\nRow count = $row_count\n"; // Move to a specific row in the result set. $row = sqlsrv_fetch($stmt, SQLSRV_SCROLL_FIRST); $EmployeeID = sqlsrv_get_field( $stmt, 0); echo "Employee \n"; // Client-side cursor and batch statements $tsql = "select top 2 * from HumanResources.Employee;Select top 3 * from HumanResources.EmployeeAddress"; $stmt = sqlsrv_query($conn, $tsql, array(), array("Scrollable"=>"buffered")); if (! $stmt) < echo "Error in statement execution.\n"; die( print_r( sqlsrv_errors(), true)); >$row_count = sqlsrv_num_rows( $stmt ); echo "\nRow count for first result set = $row_count\n"; $row = sqlsrv_fetch($stmt, SQLSRV_SCROLL_FIRST); $EmployeeID = sqlsrv_get_field( $stmt, 0); echo "Employee \n"; sqlsrv_next_result($stmt); $row_count = sqlsrv_num_rows( $stmt ); echo "\nRow count for second result set = $row_count\n"; $row = sqlsrv_fetch($stmt, SQLSRV_SCROLL_LAST); $EmployeeID = sqlsrv_get_field( $stmt, 0); echo "Employee \n"; ?> 

В следующем примере показан курсор на стороне клиента, использующий sqlsrv_prepare и размер буфера другого клиента.

"AdventureWorks"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if ( $conn === false ) < echo "Could not connect.\n"; die( print_r( sqlsrv_errors(), true)); >$tsql = "select * from HumanResources.Employee"; $stmt = sqlsrv_prepare( $conn, $tsql, array(), array("Scrollable" => SQLSRV_CURSOR_CLIENT_BUFFERED, "ClientBufferMaxKBSize" => 51200)); if (! $stmt ) < echo "Statement could not be prepared.\n"; die( print_r( sqlsrv_errors(), true)); >sqlsrv_execute( $stmt); $row_count = sqlsrv_num_rows( $stmt ); if ($row_count) echo "\nRow count = $row_count\n"; $row = sqlsrv_fetch($stmt, SQLSRV_SCROLL_FIRST); if ($row ) < $EmployeeID = sqlsrv_get_field( $stmt, 0); echo "Employee \n"; >?> 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *