Сделал простой тестовый ассемблерный файл на fasm для FreeBSD (8.4) с разными SSE
инструкциями и не обнаружил никаких зависаний и segfault (при условии выравнивания
align 16 для тех команд, которым оно нужно). Логику работы самих команд не проверял,
это надо уже или добавлять отладочную печать, либо писать на родном ATT ассемблере
с отладочной информацией.
Однако при простом запуске mplayer с небольшим роликом из Xwindow я получил полное
зависание (ни segfault, ни panic - просто зависло все). Если же запустить mplayer из
текстовой консоли, то один раз ролик остановился, но система осталась работоспособной
со "слепым" экраном, я даже смог корректно выключить OS. Другой раз ролик даже начал
проигрываться, но после попытки переключения консолей все встало окончательно.
Текущая гипотеза - при транспорте слишком длинных операндов SSE инструкций
через контроллер памяти (RAM<->CPU) в каких-то случаях (явно не всегда!) нарушается
целостность данных в памяти или кеше процессора (поведение системы напоминает
случаи нарушения когерентности памяти и кеша, я собственно больше всего подозреваю
те SSE инструкции, которые отключают кеширование на время своего выполнения).
Поведение системы становится плохо предсказуеммым - возможно вплоть до
неконтролируемого штатными средствами нарушения сегментной защиты и разрушения
ядра в памяти (или даже сбоя самого CPU). Из-за этого очень затруднительно вести отладку
обычными способоами - если бы ядро или приложение свалилось бы в panic/core, достаточно
было-бы посмотреть трассу обратных вызовов - bt.
При таких условиях использовать P3 на i440LX нежелательно даже для тех OS, которые
вроде бы и работают - это как на пороховой бочке сидеть, до первого приложения, которое
выполнит "опасную" комбинацию из SSE инструкций.
Я правда не проверял добавленные в P3 MMX команды, но вряд-ли в них дело.
Проверки делались на ASUS P2L97-S и P2L97-DS (с одним CPU). CPU - Katmai 550Mhz.
Точно наверно можно узнать с помощью JTAG, но таких возможностей у меня нет...
Если у кого есть другие гипотезы и предложения - пишите!
rgt, прошло немало времени, решил таки проверить.
Сделал простой тестовый ассемблерный файл на fasm для FreeBSD (8.4) с разными SSE
инструкциями и не обнаружил никаких зависаний и segfault (при условии выравнивания
align 16 для тех команд, которым оно нужно). Логику работы самих команд не проверял,
это надо уже или добавлять отладочную печать, либо писать на родном ATT ассемблере
с отладочной информацией.
Однако при простом запуске mplayer с небольшим роликом из Xwindow я получил полное
зависание (ни segfault, ни panic - просто зависло все). Если же запустить mplayer из
текстовой консоли, то один раз ролик остановился, но система осталась работоспособной
со "слепым" экраном, я даже смог корректно выключить OS. Другой раз ролик даже начал
проигрываться, но после попытки переключения консолей все встало окончательно.
Текущая гипотеза - при транспорте слишком длинных операндов SSE инструкций
через контроллер памяти (RAM<->CPU) в каких-то случаях (явно не всегда!) нарушается
целостность данных в памяти или кеше процессора (поведение системы напоминает
случаи нарушения когерентности памяти и кеша, я собственно больше всего подозреваю
те SSE инструкции, которые отключают кеширование на время своего выполнения).
Поведение системы становится плохо предсказуеммым - возможно вплоть до
неконтролируемого штатными средствами нарушения сегментной защиты и разрушения
ядра в памяти (или даже сбоя самого CPU). Из-за этого очень затруднительно вести отладку
обычными способоами - если бы ядро или приложение свалилось бы в panic/core, достаточно
было-бы посмотреть трассу обратных вызовов - bt.
При таких условиях использовать P3 на i440LX нежелательно даже для тех OS, которые
вроде бы и работают - это как на пороховой бочке сидеть, до первого приложения, которое
выполнит "опасную" комбинацию из SSE инструкций.
Я правда не проверял добавленные в P3 MMX команды, но вряд-ли в них дело.
Проверки делались на ASUS P2L97-S и P2L97-DS (с одним CPU). CPU - Katmai 550Mhz.
Точно наверно можно узнать с помощью JTAG, но таких возможностей у меня нет...
Если у кого есть другие гипотезы и предложения - пишите!