• О несостоятельности популярных информационно-диагностических программ.
    Часть 1.

Редакция 1.0.1 от 16.04.2015

Цель материала

Цель написания данной статьи – доказать несостоятельность популярного диагностического программного обеспечения в части интерпретации данных DDR3 SPD и, как результат, – недостоверность в отображении сведений о модулях оперативной памяти стандарта DDR3 SDRAM.

Вступление

Программа ЦПУ-З (она же "цпуза") – широко известная разработка французского программиста, снискавшая феноменальную популярность за свою многолетнюю историю развития, примитивный графический интерфейс и простоту в использовании. Долгое время любые попытки энтузиастов-разработчиков придумать более совершенный по функциональности аналог и свергнуть с пьедестала почёта ЦПУ-З заканчивались неудачами. Появление новых программ всё с той же простейшей концепцией графического интерфейса воспринимались юзерской публикой как очередной клон "цпузы". По причине абсолютной невостребованности, а также полного угасания энтузиазма у разработчиков новые проекты закрывались и исчезали также внезапно, как и начинались. Казалось бы, рынок диагностического ПО негласно поделён между авторитетными титанами-долгожителями и только созвучное с "цпузой" название новых программ давало их авторам шанс на успех.

Спустя десятилетие, ЦПУ-З, по сути, возведён в ранг всемогущего идола, истинность в показаниях которого не то чтобы не обсуждается, она подразумевается в самом названии программы! Юзеры ищут ответы на вопросы, приводя скриншоты "цпузы", оверклокеры фиксируют ею результаты разгона, публицисты-обозреватели используют её для получения сведений об аппаратуре ПК, но никто из них так до сих пор и не осмелился поставить под сомнение достоверность отображаемой информации и перепроверить её. Будучи одураченными скриншотами "цпузы", озадаченная публика ищет решения проблем, которых на самом деле не существует. Из-за легкомысленного доверия к "шедевру" страдает профессионализм и репутация авторов-обозревателей, любые попытки кулхацкеров трактовать нелепость "стандартных" частот таблицы таймингов "цпузы" с позиции неких стандартов JEDEC или исключительно собственных понятий вызывают истерический смех, а доверительное отношение оверклокеров – лишь сожаление. Забавно, что все видимые программные ошибки предпочитают не замечать и не указывать на их наличие, как будто их и нет вовсе. Ощущение, что ЦПУ-З – идеал незыблемой истины. ""Частоты" здесь совершенно условные (в меру ошибочности вышеназванных программ). Но их количество соответствует количеству возможных ступеней изменения частоты компьютера при работе системы управления питанием. Чем больше таких ступеней - тем лучше. Вполне возможно, что количество ступеней как-то соотносится и с качеством микрочипов, с регулярностью их внутренней структуры." - forum.ixbt.com. Браво! Вот он, настоящий пользователь ЦПУ-З!

Нормативно-техническая документация

За дешифрацию данных SPD целиком и полностью ответственен разработчик программного обеспечения. В SPD нет той информации, которую мы привыкли видеть в простом наглядном виде. Массив данных SPD представлен в бинарном виде размерностью в два килобита или четыре килобита (для DDR4 SPD), который необходимо дешифровать в соответствии с картой SPD на конкретный стандарт модулей SDRAM и скомпоновать для удобного восприятия пользователем. Карта дешифрации публикуется в официальных документах-приложениях, разрабатываемых ответственными подразделениями комитета JEDEC JC-42. Примерами таких приложений могут служить SPD Annex K - Serial Presence Detect (SPD) for DDR3 SDRAM Modules (Release 6), SPD Annex L: Serial Presence Detect for DDR4 SDRAM (Release 2) и другие. Каждый из задействованных битов, байтов или группы байтов SPD имеет своё назначение.

Основным документом, устанавливающим фундаментальную спецификацию, включая электрические, параметрические и частотно-временные характеристики, функциональность, корпусировку и назначение выводов микросхем ОЗУ, на тот или иной стандарт оперативной памяти является "JESD79", который разрабатывается и дополняется подразделением JC-42.3 "DRAM Memories" комитета JEDEC JC-42. Для оперативной памяти стандарта DDR3 SDRAM таким основополагающим документом является JESD79-3 JEDEC Standard, для DDR4 SDRAM – JEDEC79-4 JEDEC Standard. Поэтому, когда кто-то абстрактно заявляет о соответствии той или иной информации из "цпузы" некому неназванному стандарту JEDEC, знайте, что это человек некомпетентен и просто оперирует общими фразами на уровне собственных понятий и умозаключений.

Практическая часть

Перед тем, как перейти к рассмотрению частотно-временных характеристик, определённых отраслевым стандартом JESD79-3 для микросхем DDR3 SDRAM, введём определение "спидбина" – Speed Bin (иначе – "скоростной режим" или "скоростная группа"), под которым подразумевают набор управляющих сигналов ЗУ, каждый из которых имеет свою минимальную длительность при определенной частоте. Так, например, стандартный спидбин DDR3-1600K подразумевает доступ к ячейкам ЗУ с минимальной длительностью 11-11-11-28 сигналов CAS, tRCD, tRP и tRAS соответственно при тактовой частоте импульсов синхронизации 800 МГц. Изменение в минимальной длительности какого-либо сигнала хотя бы на один такт исключает принадлежность целой группы к стандартной. В этом случае в обозначении спидбина последняя буква исключается.

Минимальная длительность сигналов группы выражается в тактах. Однако важно заметить, что в SPD она представлена шестнадцатеричным кодом размерностью, как правило, один или два байта. Код преобразуется в наносекунды с использованием базового времени развёртки Medium Timebase и Fine Timebase. Исключение составляет только набор поддерживаемых длительностей CAS Latency. Поэтому при формировании таблицы таймингов разработчик ПО должен предусмотреть корректную формулу преобразования одной величины в другую, т.е. перевод шестнадцатеричного кода в наносекунды, а затем – в такты.

Сгруппируем в таблицу определённые стандартом DDR3 SDRAM спидбины, обратившись к документу JEDEC JESD79-3F (ревизия F).

Speed Bin Frequency CAS tRCD tRP tRAS
DDR3-800D 400 MHz 5 5 5 15
DDR3-800E 400 MHz 6 6 6 15
DDR3-1066E 533 MHz 6 6 6 20
DDR3-1066F 533 MHz 7 7 7 20
DDR3-1066G 533 MHz 8 8 8 20
DDR3-1333F 667 MHz 7 7 7 24
DDR3-1333G 667 MHz 8 8 8 24
DDR3-1333H 667 MHz 9 9 9 24
DDR3-1333J 667 MHz 10 10 10 24
DDR3-1600G 800 MHz 8 8 8 28
DDR3-1600H 800 MHz 9 9 9 28
DDR3-1600J 800 MHz 10 10 10 28
DDR3-1600K 800 MHz 11 11 11 28
DDR3-1866J 933 MHz 10 10 10 32
DDR3-1866K 933 MHz 11 11 11 32
DDR3-1866L 933 MHz 12 12 12 32
DDR3-1866M 933 MHz 13 13 13 32
DDR3-2133K 1067 MHz 11 11 11 36
DDR3-2133L 1067 MHz 12 12 12 36
DDR3-2133M 1067 MHz 13 13 13 36
DDR3-2133N 1067 MHz 14 14 14 36

Теперь проверим отображаемую на закладке "SPD" информацию на соответствие официальному стандарту JESD79-3. Для этого воспользуемся последней на данный момент версией программы 1.72. Для типового UDIMM-модуля оперативной памяти производства Kingston Technology со стандартным спидбином DDR3-1333H результат интерпретации данных SPD в виде сформированной таблицы таймингов представлен ниже.

CPU-Z tells somekind of bullshit

Как видно, два из четырех спидбинов случайным образом определись корректно. А вот частоты 457 МГц и 609 МГц никакого отношения к стандартным не имеют! Более того, неверный алгоритм формирования таблицы таймингов сказался на погрешности расчёта значений минимальных длительностей сигнала tRAS для двух ошибочных частот, если, конечно, подразумевать под "JEDEC #1" спидбин DDR3-800E, а под JEDEC #3 – DDR3-1066F. Корректность остальной информации в таблице таймингов является лишь случайным совпадением, о чём будет доказано ниже.

Подавляющее большинство почитателей ЦПУ-З непоколебимо убеждено, что таблица таймингов содержится в SPD и другого не дано, как и в том, что программа ошибаться не может. При любых попытках переубедить зачастую приходилось сталкиваться просто-таки с воинствующим идиотизмом со стороны юных компьютерных натуралистов – ярых почитателей "цпузы". И тем не менее, обратившись к документу "SPD Annex K - Serial Presence Detect (SPD) for DDR3 SDRAM Modules", можно узнать, что в SPD DDR3 SDRAM, равно как и в SPD DDR4 SDRAM, прописывается только минимальная (она же – номинальная) длительность сигналов ЗУ и набор поддерживаемых микросхемой SDRAM задержек CAS Latency. Именно этот набор используется для построения промежуточных столбцов таблицы. В отношении ЦПУ-З этими столбцами являются "JEDEC #1", "JEDEC #2" и "JEDEC #3". Другими словами, если в SPD определён набор из четырёх поддерживаемых значений сигнала CAS Latency – 6T, 7T, 8T, 9T, то и программное обеспечение формирует таблицу таймингов, состоящую из такого же числа столбцов.

Теперь, в целях дальнейшего выявления программных ошибок попробуем обхитрить "цпузу", добавив в SPD нашего тестового модуля поддержку CAS Latency со значениями длительности 18T, 17T, 16T, 15T. Воспользуемся более ранними версиями программы 1.68 и 1.69.2, анонсированными соответственно в январе 2014 и апреле 2014. Результат интерпретации SPD в виде сформированной таблицы таймингов версией 1.68 представлен ниже.

CPU-Z tells somekind of bullshit

Результат, мягко говоря, впечатляет. Причём настолько, что разработчик ЦПУ-З и сам усомнился в достоверности сведений, которые отображаются его детищем, но об этом чуть позже. Абсурдные значения частот и длительностей сигналов не соответствуют ни одному стандартному спидбину! Применив некоторые корректировки алгоритма расчёта частоты для таблицы таймингов, о которых, кстати говоря, автор предпочёл утаить в списке нововведений к версии 1.69, все нестандартные частоты были заменены номинальной. "Исправленная" таблица таймингов представлена на скриншоте версии 1.69 ниже.

CPU-Z tells somekind of bullshit

Как видим, разница в значениях длительностей сигналов просто огромна. Абсурдные частоты действительно заменены номинальной. Это и правильно, ведь выше головы по стандарту не прыгнешь: какие могут быть 1371 МГц, если микросхемы памяти номинально рассчитаны на 667 МГц? Конечно, после разгона – возможно, однако в JEDEC работают не оверклокеры. "Разгон" по стандарту разрешён только в обратном направлении – на понижение значений таймингов и частоты, да и то – для обратной совместимости с аппаратным обеспечением ПК. Тем не менее, все последующие версии программы, начиная с 1.69, рассчитывают частоту для таблицы таймингов по новому алгоритму. Как это повлияло на расчёт значений длительностей сигналов для каждого спидбина – отдельная тема для изучения.

Теперь о том, почему разработчик ЦПУ-З предпочёл умолчать о внесённых корректировках в алгоритм и что побудило его принципиально пересмотреть своё понимание стандарта DDR3 SDRAM. Ответ на первый вопрос очевиден. Доверие к программе настолько высоко, что официальное упоминание о внесении принципиальных изменений сказалось бы на авторитете программы и поставило бы под вопрос репутацию автора. Иначе получится так, что на протяжении последних 7 лет, начиная с 2007 года, автор "цпузы", сам того не понимая, просто одурачивал наивных пользователей, оверклокеров, авторов статей и публикаций, т.е. тех, кто использовал ЦПУ-З, как надёжное по их убеждению средство получения достоверной информации о модулях оперативной памяти.

Ироничный видеоролик, размещенный в разделе Tips & Tricks нашего сайта, высмеивающий ахинею на закладке "SPD", будет считаться ответом на второй вопрос. Именно после его появления разработчик "цпузы" оперативно отреагировал на весь тот бред, который годами вводил в заблуждение наивных людей и кое-как пофиксил его.

Ревизия 1.1 приложения "SPD Annex K - Serial Presence Detect (SPD) for DDR3 SDRAM Modules", опубликованная JEDEC в ноябре 2010 года, определяет для сигналов tCK, tAA, tRCD, tRP и tRC "fine"-коррекцию, предназначенную для точной настройки значений длительности с точностью до пикосекунд. Введение "fine"-коррекции обусловлено внедрением в стандарт DDR3 SDRAM двух новых частот – 933 МГц и 1067 МГц и добавлением соответствующих групп спидбинов, как, например, DDR3-1866K, DDR3-2133L и других. Казалось бы, времени у автора "цпузы" было достаточно, чтобы обеспечить поддержку новой ревизии DDR3 SPD 1.1, однако концентрация сил, видимо, прилагалась в части идентификации процессоров или чего-то иного, что собственно и подтвердится скриншотом ниже. В доказательство сказанного стандартный спидбин DDR3-1333H нашего модуля был перезаписан спидбином DDR3-2133N. Информация считывалась последней на данный момент версией 1.72.

CPU-Z tells somekind of bullshit

Как видно, ЦПУ-З снова отображает очевидный бред. Ни одна из программно рассчитанных частот не соответствует по значению стандарту JEDEC JESD79-3. Даже номинальная частота 1067 МГц была неточно рассчитана как 1000 МГц. Ошибки, допущенные в расчёте частот, негативно отразились на расчётах значений минимальных длительностей сигналов ЗУ. Каждый из четырёх столбцов таблицы даёт весьма сумбурное представление о том, какой спидбин он представляет. Причиной тому является игнорирование "fine"-коррекции. Для убедительности приведём формулу расчёта номинальной частоты микросхем оперативной памяти DDR3 SDRAM:

Freq=1000/tCKmin, где tCKmin=SPD[12]*MTB+ShortInt(SPD[34])*FTB

  • SPD[12] – байт 12, содержащий hex-код значения минимальной длительности сигнала tCK;
  • MTB (Medium timebase) – базовое время развёртки для перевода hex-кода в наносекунды;
  • SPD[34] – байт 34, содержащий значение поправки (коррекции) в шестнадцатеричном виде;
  • FTB (Fine timebase) – базовое время развертки для получения величины коррекции;
  • Выражение ShortInt(SPD[34]) преобразует явным образом значение байта 34 к значению из диапазона -127 – 127.

Итак, подставив стандартные значения параметров спидбина DDR3-2133N в формулу, получим следующее выражение: tCKmin=08h*0,125+ShortInt(С2h)*0,001=1-0,062=0,938 нс. Тогда номинальная частота микросхем ОЗУ: Freq=1000/0,938=1066 МГц. Если в формуле расчёта tCKmin опустить второе слагаемое получим: tCKmin=08h*0,125=1 нс. Следовательно, Freq=1000/1=1000 МГц, что и отображает ЦПУ-З.

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

Thaiphoon Burner DDR3-2133N

Вывод

Мы ни в коей мере не ставили цель унизить автора ЦПУ-З и его заслуги. Главная задача статьи – показать и, в ряде случаев, доказать несостоятельность программ, несмотря на их высокую популярность и авторитет. Программам свойственно ошибаться, ведь их пишут люди. И не столько важен опыт разработки программ, сколько понимание области программирования. Можно быть суперклассным программистом со знанием десятка современных языков программирования, но если не иметь понятия в области программирования – результат, как мы увидели на примере ЦПУ-З, будет очевидным. На данный момент мы не рекомендуем использовать данную программу в целях получения информации SPD.

"Поскольку в одном байте восемь битов, то получается, что чипы четырехгигабитные" - wildchaser - автор обзорных статей о модулях оперативной памяти, overсlockers.ru.

HOME HISTORY LICENSES DOWNLOAD TIPS&TRICKS FAQ CONTACTS FORUMS

Project by Vitaliy Jungle
Copyright © 2008 Showshock Softnology
All Rights Reserved

Company Location
Warsaw, Republic of Poland
http://www.softnology.biz