Технический форум
Вернуться   Технический форум > Компьютерный форум > Операционная система Windows > Windows XP и прочие


Закрытая тема
 
Опции темы Опции просмотра
Старый 30.05.2021, 21:57   #1 (permalink)
vurdxplab
Member
 
Регистрация: 15.01.2021
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation RTC баг на многопроцессорном ядре WinXP

Уход времени "вперёд" на многоядерных процессорах под Windows XP

При использовании Windows XP на современных материнских платах обнаружился досадный глюк - системное время уходит вперёд, причем степень ухода зависит от активности работы ПК и может набегать до 5 минут в день. Проблема проявляется только в Windows XP. На выключенном ПК, под UEFI/ BIOS или в современной ОС - время идет правильно. Хотя часовая микросхема RTC должна быть независимой частью, но на современных материнских платах это не так. Исследование показало, что уход часов "вперед" происходит при постоянном переключении периода системного таймера 16 мс в 1 мс и обратно. В Windows XP (по умолчанию) этот таймер работает с периодом 16 мс и если на ПК не проявлять активности - то системный таймер продолжит работать с периодом 16 мс. Но при запуске Хрома или мультимедиа приложений, таймер переключается в режим работы с периодом 1 мс и может возвращаться на 16 мс. При жестко установленном периоде 16 мс (или 1 мс) время идет точно, но при постоянном переключении таймера 16 мс - 1 мс - 16 мс - 1 мс происходит сбой в работе часов реального времени RTC.

Решение проблемы:
Поскольку специалисты с WinRaid не смогли разобраться с причиной данной проблемы, то "красивого" решения (на уровне патча системных файлов) по состоянию на 3 января 2021 года ещё не появилось. Имеющиеся правленые файлы hal.dll и intelppm.sys решают какую-то другую проблему с таймерами, но описанный глюк никак не влияют. Зато мы имеем "костыльное" решение - программа Timer_Fix с исходным кодом, написанная на Visual Studio 6.0. Программа не имеет интерфейса, после запуска она переведет системный таймер на период 1 мс и оставит его неизменным, программа постоянно висит в процессах до перезагрузки ОС. Для завершения работы (в случае необходимости) нужно просто прибить процесс Timer_Fix.exe через "Диспетчер задач". Для удобства лучше положить данную программу в "Автозагрузку" и напрочь забыть о проблеме с уходом времени. Каких-либо косяков от использования данного метода не обнаружено. В целом, данный фикс можно считать "костыльным", но ничего лучшего на данный момент нет.




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

Старый 30.05.2021, 21:57
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Советую непременно ознакомиться с похожими обсуждениями на нашем форуме

Вольтаж на ядре ЦП
OCCT Ошибка в ядре 2
стоят 2 системы,winXP и win7, перестала загружаться winXP
При работающей WinXP SP2 в другой раздел установить WinXP SP3,создать меню мультизагр

Старый 30.05.2021, 21:59   #2 (permalink)
vurdxplab
Member
 
Регистрация: 15.01.2021
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Программа демонстрации RTC bug (программа накрутки времени)

Разработчик программы - женщина-программист Xenia.

Данная программа служит для наглядной демонстрации проблемы с RTC таймером. Она устанавливает период системного таймера 1 мс (0.977 мс) выдерживает 0.2 секунды, устанавливает 16 мс (15.625 мс) выдерживает 0.2 секунды и далее продолжает переключать системный таймер с заданными длительностями. Программа состоит из 2-х частей:
1. timeBeginPeriod.exe - консольная программа для установки режима таймера. Заданный режим (период и длительность) передаётся в параметрах командной строки. Программа представлена с исходным кодом на Borland C++ Builder 6.0.
2. timer.exe - это GUI интерфейс для timeBeginPeriod.exe. В графическом режиме можно задать период 1, длительность 1 и период 2, длительность 2 работы системного таймера. Программа представлена с исходным кодом на Borland C++ Builder 6.0.
Важно!!! Для корректной работы timeBeginPeriod.exe и timer.exe должны находиться рядом, в одной директории.

Проверка RTC-bug:
1. Проверку производим на свежезагруженной системе, без выполняющихся фоновых задач. Все фоновые процессы должны быть закрыты, поскольку они могут удерживать таймер на 1 мс, что помешает работе демонстрационной программы.
2. Запускаем Clockres - программу для контроля периода системного таймера. Измеренный период должен = 15.625 мс
3. Запускаем CPU-Z, переходим на закладку About, нажимаем кнопку Timers и кнопку Start, чтобы контроллировать частоты системных таймеров
4. Запускаем timer.exe. Устанавливаем режимы Период 1 = 1 мс, Длительность 1 = 0,2 секунды, Период 2 = 16 мс, Длительность 2 = 0,2 секунды и нажимаем кнопку Start. Эти режимы заданы режимами по-умолчанию.
5. В установленном режиме (по-умолчанию) будет происходить "накрутка" времени RTC таймера приблизительно +2 секунды за 1 минуту работы программы. При Длительности = 0.1 секунда, накрутка времени будет составлять +4 секунды за 1 минуту.
vurdxplab вне форума  
Старый 30.05.2021, 22:03   #3 (permalink)
vurdxplab
Member
 
Регистрация: 15.01.2021
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Состав архива:
Clockres - программа для контроля периода системного таймера
CPU-Z - в закладке About, кнопка Timers можно контроллировать частоты системных таймеров
Neutron 1.07 - программа для контроля и синхронизации времени через интернет
Timer_Fix (с исходным кодом) - фикс проблемы с уходом времени вперед (устанавливает таймер на 1мс)
Timer_v10 (с исходным кодом) - программа накрутки времени, для демонстрации проблемы

Скачать (2 МБ) - censored

На замену консольной Clockres, по моей просьбе, программист Xenia разработала программу Timer_Interval_v4 - графическую замену Clockres. Программа измеряет интервал таймера каждые 50 мс и выводит измеренное значение на экран поверх всех окон.

Скачать Timer_Interval_v4 (с исходным кодом) - censored

Ещё раз о RTC баге на многопроцессорном ядре

Вначале я полагал, что баг присущ исключительно "современным" материнским платам (новее 2014 года), которые не предназначены для Windows XP. Но проведя тесты на ПК 2008-2009 года сборки, который имеет официальную поддержку Windows XP я обнаружил такой-же баг! В тесте принимал участие Intel Celeron Core 2 Duo (2 ядра по 2,8 GHz) на материнской плате с чипсетом G41. Поскольку оборудование довольно старое и имеет официальную поддержку Windows XP, то проверка делалась на оригинальном MSDN образе WinXP Pro SP3, со всеми штатными драйверами. Все только официальное, никаких модификаций. Но RTC баг всё равно есть!

Неделю ранее, я получил подтверждение от товарища, который также тестировал на 2-х ядерном ПК и подтвердил накрутку времени при частом использовании Хрома. До этого, он не понимал причину и пенял на неточный часовой кварц. Но мы то теперь знаем, что ни кварц, ни батарейка не причем! В данное время я имею 100% подтверждение бага, на 3-х ПК из 3-х испытуемых. Из данного факта делаю вывод, что RTC багу подвержены абсолютно все системы с 2-х (и более) ядерным Intel-процессором. Происходит ли это на АМД не известно, нет такого ПК.

Для подтверждения бага нужно:
1) 2-х или более ядерный Intel процессор с установленной Windows XP (причем железо может быть и довольно старое, на ПК 2008 года баг уже проявляется)
2) Отсутствие постоянно запущенной программы, удерживающей таймер на 1 мс (0.977 мс). На свежезагруженной ОС дефолтное значение периода должно быть = 16 мс, проверяется через Clockres


Замечание:
Внимательно читайте Правила форума. Ссылки на файлообменники у нас под запретом. Ваш модератор
vurdxplab вне форума  
Старый 31.05.2021, 20:24   #4 (permalink)
vurdxplab
Member
 
Регистрация: 15.01.2021
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Сбой системных часов при частом переключении таймера проявляется на всех мультипроцессорных ПК. RTC bug на старом 775 сокете - комп 2008-2009 года сборки.

Скриншот -
Нажмите на изображение для увеличения
Название: Scr-1.png
Просмотров: 31
Размер:	162.0 Кб
ID:	467668


Изучите материал: http://www.tehnari.ru/f8/t32642/
vurdxplab вне форума  
Старый 31.08.2021, 00:59   #5 (permalink)
vurdxplab
Member
 
Регистрация: 15.01.2021
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Обновление комплекта "WinXP-IE Optional Patch Integrator" v3.2.0.1b от 30.08.2021 г.

Компплект включает модернизированные драйвера USB3, AHCI SATA, ACPI, NVMe, PAE fix, CPU AVX fix, GPT, твики, патчи. Набор можно использовать в "автоматическом" режиме, запуская CMD-файл и интегрируя компоненты в ISO-образ, либо "вручную" - добавляя файлы в дистрибутив или устанавливая драйвера через "Диспетчер устройств".

Скачать v3.2.0.1b - Ссылку гуглите

Текстовая методика установки "Windows ХР" на современные ПК (от 30.08.2021)

TXT-файл (RUS) - Ссылку гуглите
vurdxplab вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:23.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.