5. Данный процессор поддерживает только Write Through (сквозная запись) кэш. К этому времени уже выпускались процессоры с Write Back (обратная запись) кэшем. Но поддержка этого режима кэширования зависит не только от процессора, но и от чипсета. Очевидно, что Overdrive процессоры предназначены для установки в устаревшие платы без поддержки Write Back. Официально Overdrive процессоры с Write Back кэшем никогда не выпускались.
Выводы:
По данным The Speed Test 1.14 быстродействие в целочисленных операциях сопоставимо с Intel Pentium 60 МГц.
Выводы:
По данным The Speed Test 1.14 быстродействие в целочисленных операциях сопоставимо с Intel Pentium 60 МГц.
🔥8👍2❤1
Вышла новая бета версия ASTRA for DOS 7.21 beta.
Новое в этой бете:
- Добавлено определение sSPEC номера процессоров семейства Intel 486
- Добавлено определение коэффициента умножения процессоров 486
- Исправлено чтение информации DDR5 SPD на чипсетах Intel
- Исправлено определение номера AMD OPN процессоров AMD Athlon/Sempron
- Исправлено зависание программы при определении звуковой карты ESS 1868 в
некоторых случаях
- исправлены некоторые незначительные ошибки
- обновлена база данных программы
Новое в этой бете:
- Добавлено определение sSPEC номера процессоров семейства Intel 486
- Добавлено определение коэффициента умножения процессоров 486
- Исправлено чтение информации DDR5 SPD на чипсетах Intel
- Исправлено определение номера AMD OPN процессоров AMD Athlon/Sempron
- Исправлено зависание программы при определении звуковой карты ESS 1868 в
некоторых случаях
- исправлены некоторые незначительные ошибки
- обновлена база данных программы
👍8
Вышла новая бета версия ASTRA32 for Windows 4.21 beta.
Новое в этой бете:
- Добавлено определение sSPEC номера процессоров семейства Intel 486
- Добавлено определение коэффициента умножения процессоров 486
- Исправлено чтение информации DDR5 SPD на чипсетах Intel
- Исправлено определение номера AMD OPN процессоров AMD Athlon/Sempron
- Исправлено определение некоторых SCSI контроллеров Adaptec в Windows NT 4.0
- исправлены некоторые незначительные ошибки
- обновлена база данных программы
Новое в этой бете:
- Добавлено определение sSPEC номера процессоров семейства Intel 486
- Добавлено определение коэффициента умножения процессоров 486
- Исправлено чтение информации DDR5 SPD на чипсетах Intel
- Исправлено определение номера AMD OPN процессоров AMD Athlon/Sempron
- Исправлено определение некоторых SCSI контроллеров Adaptec в Windows NT 4.0
- исправлены некоторые незначительные ошибки
- обновлена база данных программы
🔥6👍3
astra32beta.exe
3.3 MB
ASTRA32 for Windows 4.21 Beta
👍5🔥3👏1
Вышла новая бета версия ASTRA for DOS 7.21 beta.
Новое в этой бете:
- улучшено определение процессоров семейства 386/486 (без поддержки CPUID) с помощью метода CPU RESET.
- исправлено зависание программы на процессорах семейства IBM 486SLC/BLX
- исправлены некоторые незначительные ошибки
Новое в этой бете:
- улучшено определение процессоров семейства 386/486 (без поддержки CPUID) с помощью метода CPU RESET.
- исправлено зависание программы на процессорах семейства IBM 486SLC/BLX
- исправлены некоторые незначительные ошибки
🔥10👍2
Позавчера вышла новая бета версия ASTRA for DOS.
Расскажу что означает строка "улучшено определение процессоров семейства
386/486 (без поддержки CPUID) с помощью метода CPU RESET".
Современные процессоры определяются с помощью команды CPUID. Но были времена когда в процессорах не было такой команды.
Изначально в IBM PC был возможен только один вариант процессора - Intel 8088 4.87 МГц и проблема как таковая не существовала. С появлением процессора Intel 80286 появилась задача определить на каком процессоре работает программа.
Intel опубликовала официальный способ определения 286 процессора. Он основан на том, что биты 12-15 регистра флагов FLAGS всегда установлены в ноль на 286 процессоре.
Подобная манипуляция с различными битами в расширенном регистре флагов EFLAGS позволяет определить 386 и 486 процессор. Но без деталей. Например, этим методом нельзя определить SX или DX вариант процессора. Тем более нельзя узнать производителя процессора. Только поколение.
Этого недостаточно.
Расскажу что означает строка "улучшено определение процессоров семейства
386/486 (без поддержки CPUID) с помощью метода CPU RESET".
Современные процессоры определяются с помощью команды CPUID. Но были времена когда в процессорах не было такой команды.
Изначально в IBM PC был возможен только один вариант процессора - Intel 8088 4.87 МГц и проблема как таковая не существовала. С появлением процессора Intel 80286 появилась задача определить на каком процессоре работает программа.
Intel опубликовала официальный способ определения 286 процессора. Он основан на том, что биты 12-15 регистра флагов FLAGS всегда установлены в ноль на 286 процессоре.
Подобная манипуляция с различными битами в расширенном регистре флагов EFLAGS позволяет определить 386 и 486 процессор. Но без деталей. Например, этим методом нельзя определить SX или DX вариант процессора. Тем более нельзя узнать производителя процессора. Только поколение.
Этого недостаточно.
🔥8
Каждое поколение процессора имеет несколько моделей и может использовать разные ревизии ядра с исправленными ошибками. Хорошо бы знать точную ревизию процессора. Поэтому все процессоры от Intel 80386, выпущенного в 1985 году, до современных Core/Ryzen после аппаратного сброса содержат в регистре EDX специальный идентификатор. Этот идентификатор может прочитать BIOS, но он нигде не сохраняется и не доступен для прикладных программ. В некоторых версиях BIOS для IBM PS/2 и старых версиях AMI BIOS есть функция для получения идентификатора из прикладной программы, но я никогда не встречал такой BIOS.
Для решения этой проблемы в процессорах Intel Pentium в 1993 году появилась инструкция CPUID. Она возвращает производителя процессора, семейство, модель и степпинг. Фактически CPUID возвращает тот самый идентификатор из регистра EDX.
Постепенно эта инструкция появилась в новых вариантах 486 процессоров, а так же у других производителей.
Поддержка CPUID появилась в 1993 году у всех Intel 486DX/SX с поддержкой SL Enhanced (функция энергосбережения).
В процессорах AMD 486 поддержка CPUID появилась в версии Enhanced с Write-Back кэшем в 1994 году.
В процессорах Cyrix команда CPUID по некоторым источникам появилась в Cx5x86 в 1995 году, но по умолчанию она отключена. В эмуляторе 86BOX программно включить CPUID не удалось, настоящего Cx5x86 у меня для проверки нет.
Тем не менее, в процессорах Cyrix (начиная с Cx486SLC/DLC, 1992 год) есть свой механизм идентификации с помощью регистров конфигурации DEVID registers (DIR). Доступ к этим регистрам возможен из прикладной программы в любой момент (в отличие от идентификатора в регистре EDX, который так же присутствует в процессорах Cyrix).
Итак, в 1997 году когда началась разработка INFORMER (на Intel Pentium 166 МГц) процессоры без поддержки CPUID считались устаревшими, но еще использовались. Для определения старых процессоров использовалась сторонняя библиотека CPU/FPU feature detection library by B-coolWare. С исправлениями и модификациями эта библиотека используется в ASTRA до сих пор. Есть подозрение, что такие диагностические программы как NSSI и agSI тоже используют эту библиотеку.
Определение основано на анализе ошибок разных версий процессоров и попытке исполнения различных недокументированных команд, специфичных для данного производителя/модели. Точность определения такими методами не очень высокая. Но так как поддержка старых процессоров была сделана по остаточному принципу, то эта библиотека устраивала.
В 2000 году я увлекся ретро компьютерами, стал добавлять поддержку старого железа. В прошлой апрельской бете было добавлено определение sSPEC номера, коэффициента умножения и прочего процессоров семейства Intel 486. Разумеется, только SL Enhanced версий с поддержкой инструкции CPUID.
А как быть с более старыми процессорами Intel/AMD (с Cyrix проблем нет)?
Как я написал выше идентификатор процессора в регистре EDX появляется только после сброса процессора. Казалось бы, невозможно сбросить процессор и остаться в своей программе. Оказалось, что можно.
Для решения этой проблемы в процессорах Intel Pentium в 1993 году появилась инструкция CPUID. Она возвращает производителя процессора, семейство, модель и степпинг. Фактически CPUID возвращает тот самый идентификатор из регистра EDX.
Постепенно эта инструкция появилась в новых вариантах 486 процессоров, а так же у других производителей.
Поддержка CPUID появилась в 1993 году у всех Intel 486DX/SX с поддержкой SL Enhanced (функция энергосбережения).
В процессорах AMD 486 поддержка CPUID появилась в версии Enhanced с Write-Back кэшем в 1994 году.
В процессорах Cyrix команда CPUID по некоторым источникам появилась в Cx5x86 в 1995 году, но по умолчанию она отключена. В эмуляторе 86BOX программно включить CPUID не удалось, настоящего Cx5x86 у меня для проверки нет.
Тем не менее, в процессорах Cyrix (начиная с Cx486SLC/DLC, 1992 год) есть свой механизм идентификации с помощью регистров конфигурации DEVID registers (DIR). Доступ к этим регистрам возможен из прикладной программы в любой момент (в отличие от идентификатора в регистре EDX, который так же присутствует в процессорах Cyrix).
Итак, в 1997 году когда началась разработка INFORMER (на Intel Pentium 166 МГц) процессоры без поддержки CPUID считались устаревшими, но еще использовались. Для определения старых процессоров использовалась сторонняя библиотека CPU/FPU feature detection library by B-coolWare. С исправлениями и модификациями эта библиотека используется в ASTRA до сих пор. Есть подозрение, что такие диагностические программы как NSSI и agSI тоже используют эту библиотеку.
Определение основано на анализе ошибок разных версий процессоров и попытке исполнения различных недокументированных команд, специфичных для данного производителя/модели. Точность определения такими методами не очень высокая. Но так как поддержка старых процессоров была сделана по остаточному принципу, то эта библиотека устраивала.
В 2000 году я увлекся ретро компьютерами, стал добавлять поддержку старого железа. В прошлой апрельской бете было добавлено определение sSPEC номера, коэффициента умножения и прочего процессоров семейства Intel 486. Разумеется, только SL Enhanced версий с поддержкой инструкции CPUID.
А как быть с более старыми процессорами Intel/AMD (с Cyrix проблем нет)?
Как я написал выше идентификатор процессора в регистре EDX появляется только после сброса процессора. Казалось бы, невозможно сбросить процессор и остаться в своей программе. Оказалось, что можно.
🔥10
Историческая справка:
В 286 процессоре появился защищенный режим процессора. Перейти в него довольно просто, подготовив таблицу дескрипторов и установив всего один бит в служебном регистре CR0. А вот вернуться назад в реальный режим средствами процессора невозможно (в 386 процессоре это исправили). Поэтому разработчикам IBM PC/AT пришлось делать костыли для возврата в реальный режим без перезагрузки.
После выполнения сброса процессор передает управление BIOS, который анализирует байт отключения 0Fh в CMOS памяти. Если в этом байте записан 0, то происходит обычная теплая (без тестирования железа) перезагрузка. Если записано значение 5 или 0Ah, то вместо перезагрузки управление передается по адресу, записанному в области данных BIOS 0040h:0067h.
Этот метод можно использовать не только для выхода из защищенного режима, но и сброса процессора для сохранения идентификатора из регистра EDX.
Алгоритм примерно такой:
1 Запрещаем прерывания
2 Сохраняем сегментные регистры, т.к. их содержимое будет уничтожено после сброса
3 Записываем значение 0Ah в байт отключения 0Fh в CMOS памяти
4 В область данных BIOS по адресу 0040h:0067h записываем адрес нашей процедуры, которая получит управление после сброса и сохранит регистр EDX в переменную
5 В порт контроллера клавиатуры 64h записываем 0FEh. Это команда контроллеру клавиатуры произвести аппаратный сброс процессора
6 Ждем сброса процессора. Изначально в этом месте была небольшая задержка, по идее достаточная, чтобы дождаться сброса. Во время отладки никак не удавалось добиться стабильной работы. В 30% случаев компьютер намертво зависал. Перепробовал все что мог, потратил несколько дней. В конечном итоге вместо задержки стал ждать сброс процессора в бесконечном цикле вида
wait: delay
jmp wait
Зависания прекратились. Это первый случай в моей практике программирования когда от зависания помог бесконечный цикл :-)
7 После сброса BIOS передает управление по адресу 0040h:0067h, в котором хранится адрес пользовательской процедуры
8 Восстанавливаем сегментные регистры
9 Записываем значение 0 в байт отключения 0Fh в CMOS памяти, чтобы следующая перезагрузка была обычная
10 Сохраняем регистр EDX в переменную
В 286 процессоре появился защищенный режим процессора. Перейти в него довольно просто, подготовив таблицу дескрипторов и установив всего один бит в служебном регистре CR0. А вот вернуться назад в реальный режим средствами процессора невозможно (в 386 процессоре это исправили). Поэтому разработчикам IBM PC/AT пришлось делать костыли для возврата в реальный режим без перезагрузки.
После выполнения сброса процессор передает управление BIOS, который анализирует байт отключения 0Fh в CMOS памяти. Если в этом байте записан 0, то происходит обычная теплая (без тестирования железа) перезагрузка. Если записано значение 5 или 0Ah, то вместо перезагрузки управление передается по адресу, записанному в области данных BIOS 0040h:0067h.
Этот метод можно использовать не только для выхода из защищенного режима, но и сброса процессора для сохранения идентификатора из регистра EDX.
Алгоритм примерно такой:
1 Запрещаем прерывания
2 Сохраняем сегментные регистры, т.к. их содержимое будет уничтожено после сброса
3 Записываем значение 0Ah в байт отключения 0Fh в CMOS памяти
4 В область данных BIOS по адресу 0040h:0067h записываем адрес нашей процедуры, которая получит управление после сброса и сохранит регистр EDX в переменную
5 В порт контроллера клавиатуры 64h записываем 0FEh. Это команда контроллеру клавиатуры произвести аппаратный сброс процессора
6 Ждем сброса процессора. Изначально в этом месте была небольшая задержка, по идее достаточная, чтобы дождаться сброса. Во время отладки никак не удавалось добиться стабильной работы. В 30% случаев компьютер намертво зависал. Перепробовал все что мог, потратил несколько дней. В конечном итоге вместо задержки стал ждать сброс процессора в бесконечном цикле вида
wait: delay
jmp wait
Зависания прекратились. Это первый случай в моей практике программирования когда от зависания помог бесконечный цикл :-)
7 После сброса BIOS передает управление по адресу 0040h:0067h, в котором хранится адрес пользовательской процедуры
8 Восстанавливаем сегментные регистры
9 Записываем значение 0 в байт отключения 0Fh в CMOS памяти, чтобы следующая перезагрузка была обычная
10 Сохраняем регистр EDX в переменную
🔥8👍2
Недостатки метода:
По идентификатору в EDX невозможно узнать производителя процессора. Т.к. ранние процессоры AMD были полными (включая микрокод) клонами процессоров Intel, то отличить их программно невозможно. ASTRA пытается использовать косвенные признаки для определения процессоров AMD, но это не всегда работает.
Метод работает только в реальном режиме процессора (загружен только himem.sys). Менеджеры памяти типа EMM386 и QEMM переводят процессор в виртуальный режим. В этом случае будет работать старый неточный метод определения.
Некоторые BIOS успевают уничтожить содержимое регистра EDX до передачи управления в пользовательскую процедуру. В этом случае вернется неверное значение идентификатора.
В любом случае это лучше, чем старый метод.
Теперь ASTRA умеет точно до ревизии ядра определять ранние 486 и 386 процессоры.
Требуются бета тестеры с 386/486 процессорами. Присылайте отчеты.
По идентификатору в EDX невозможно узнать производителя процессора. Т.к. ранние процессоры AMD были полными (включая микрокод) клонами процессоров Intel, то отличить их программно невозможно. ASTRA пытается использовать косвенные признаки для определения процессоров AMD, но это не всегда работает.
Метод работает только в реальном режиме процессора (загружен только himem.sys). Менеджеры памяти типа EMM386 и QEMM переводят процессор в виртуальный режим. В этом случае будет работать старый неточный метод определения.
Некоторые BIOS успевают уничтожить содержимое регистра EDX до передачи управления в пользовательскую процедуру. В этом случае вернется неверное значение идентификатора.
В любом случае это лучше, чем старый метод.
Теперь ASTRA умеет точно до ревизии ядра определять ранние 486 и 386 процессоры.
Требуются бета тестеры с 386/486 процессорами. Присылайте отчеты.
🔥14
DowngradeN50.pdf
20 MB
Большое интервью со мной электронного журнала о ретро компьютерах "Downgrade".
Весь выпуск журнала во вложении.
Ниже интервью в текстовом виде.
Весь выпуск журнала во вложении.
Ниже интервью в текстовом виде.
🔥5
Per aspera ad ASTRA
Вашему вниманию предлагается интервью с Константином Владимировичем Кондаковым (a2kkv), автором известной диагностической программы ASTRA (https://www.astra32.com/). Константин Владимирович любезно согласился ответить на несколько вопросов о себе и своей разработке.
Расскажите немного о себе – где Вы родились, сколько Вам лет, образование и так далее – любую информацию, которой готовы поделиться с нашими читателями.
Константин Кондаков: Мне 47 лет, высшее образование. Факультет систем автоматизированного проектирования (САПР). Специальность – «инженер-системотехник». Сейчас это называется «IT-шник».
Примечание 1: Название статьи переводится с латыни как «Через тернии к звёздам», ну или, в данном случае, «Через тернии к “Астре”» – прим. ред.
Вашему вниманию предлагается интервью с Константином Владимировичем Кондаковым (a2kkv), автором известной диагностической программы ASTRA (https://www.astra32.com/). Константин Владимирович любезно согласился ответить на несколько вопросов о себе и своей разработке.
Расскажите немного о себе – где Вы родились, сколько Вам лет, образование и так далее – любую информацию, которой готовы поделиться с нашими читателями.
Константин Кондаков: Мне 47 лет, высшее образование. Факультет систем автоматизированного проектирования (САПР). Специальность – «инженер-системотехник». Сейчас это называется «IT-шник».
Примечание 1: Название статьи переводится с латыни как «Через тернии к звёздам», ну или, в данном случае, «Через тернии к “Астре”» – прим. ред.
🔥3👍1