8 January 2012 г., 13:01
Результаты наших экспериментов с платформой Brazos, к сожалению, нельзя назвать обнадёживающими :(.
Выясняется, что на этой платформе мы имеем два, одновременно действующие, ограничения на значения величин, определяющих частоту ядра процессора:
1) Максимальное значение множителя, равное 24 для C-60 и 16 для E-350.
2) Минимальное значение делителя, равное 3 для C-60 и 2 для E-350.
В результате действия этих ограничений, мы получаем предельное значение отношения частоты ядра к частоте шины (аналог множителя в процессорах Интел), равное:
- (24 + 16) / 3 = 13,33 для C-60;
- (16 + 16) / 2 = 16,00 для E-350.
Здесь, правда, стоит заметить следующее: если ограничение множителя описано в документации, и может быть считано из процессора (биты 54:49 MSR C0010071), то ограничение делителя не описано нигде, и действует непонятно, "втихую".
И это даёт нам некий (впрочем, призрачный) шанс...
Ведь то, что вышеупомянутые ограничения наблюдаются нами как действующие одновременно, совсем не означает, что они действуют независимо. То есть, существует вероятность того, что, например, для C-60, 3 - это не минимальное значение делителя "вообще", а минимальное значение делителя именно для установленного множителя 24. Если это так, то, уменьшая значение множителя, мы можем, при каком-то определённом его значении (или в каком-то диапазоне), "получить разрешение" на уменьшение делителя до какого-то другого значения. Кстати, отмечу ещё и один наблюдаемый результат: отношение максимального множителя к минимальному делителю равно 8 в обоих исследованных нами случаев. Возможно, конечно, что это - просто совпадение...Но если это имеет какой-то смысл, то в этих рамках можно получить, например, такие сочетания:
- для пары 22 и 2,75 -> частота 1382 МГц (уже кое-что для C-60);
- для пары 20 и 2,5 -> частота 1440 МГц (ещё лучше);
- для пары 18 и 2,25 -> частота 1511 МГц (совсем хорошо :));
- для пары 14 и 1,75 -> частота 1714 МГц (небольшой разгон для E-350);
- для пары 12 и 1,5 -> частота 1867 МГц (лучше...);
- для пары 10 и 1,25 -> частота 2080 МГц (+30% - наверное, уже нереально!);
Вот такие фантазии :).
Именно это я и имел в виду, когда предлагал
Stingeryar провести эксперимент, описанный в последнем абзаце
этого сообщения.
И я предлагаю владельцам аппаратов с C-60 его всё-таки провести. Правда, здесь существует затруднение. Дело в том, что биты в регистре D18F3xD4, нужные нам для реализации такой хитрой штуки, имеют тип "reset-applied", что авторы BDG описывают как "takes effect on warm reset", без никаких дополнительных разъяснений.
Для того, чтобы понять, как это на самом деле работает, нужен, опять же, эксперимент. Самый простой (и предпочтительный для нас) вариант, который приходит в голову: мы изменяем значение, оно записывается в регистр, как положено, но вступает в действие только после перезагрузки машины без выключения. А до перезагрузки в регистре записано новое значение, но реально используется старое. Самый сложный и неприятный: команда записи значения в этот регистр должна выполняться сразу, или почти сразу, после сброса процессора, т.е. она должна находиться в коде начального загрузчика BIOS. Скорее всего, на самом деле реализовано что-то среднее между этими вариантами, но выяснить это можно только экспериментально.
Итак, кто из владельцев машин с C-60 готов попробовать? Пока можно даже делители не трогать, а просто попробовать поменять множитель. Для множителя 22 нужно записать в младший байт регистра D18F3xD4 (непосредственно в ячейку с адресом D4) значение 56.
А для владельцев машин с E-350 можно попробовать установить множитель 14 (записать значение 4E).