Первый "плоский" тест
186С 3084 fast call
44FD 7A70 interrupt
быстрее в 2.8 раза
Ядро на SVN branches/flat_kernel. Для правильных тестов надо в const.inc установить new_app_base в 0.
vrr надо отключить а драйверы лучше удалить.
Fast System Call
Отлично! Попробывал скомпилять и запучтить плоское ядро как обычно, всё зависло, попробую как ты сказал
Есть идея по поводу вызова для sysenter (писал на бумаге т.ч. может не работать):
P.S. Serge
Скомпилял как ты говорил, ядро вообе не завелось дальше меню загрузки.
Есть идея по поводу вызова для sysenter (писал на бумаге т.ч. может не работать):
Code: Select all
; Application
push ebp
mov ebp, esp
push $ + 7
sysenter
pop edx
pop ecx
; Kernel
;-------
; config CPL0 stack (как раньше)
;-------
push ebp ; save app esp + 4
mov ebp, [ebp] ; ebp - original ebp
;-------
;-------
xchg ecx, [ss:esp] ; в вершин стека - app ecx, ecx - app esp + 4
sub ecx, 4
xchg edx, [ecx]
push edx
mov edx, [ss:esp - 4] ; Вот эти коэффициенты надо уточнить
mov [ecx + 4], edx ;
pop edx
sysexit
Скомпилял как ты говорил, ядро вообе не завелось дальше меню загрузки.
Ghost
> ; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
> ; and the contents of this field, plus 8, are copied into the SS register.
> ; mov edx, (os_code + 16) * 65536 + os_code
> mov edx, 0x1B0013
os_code = 8
исправил на mov edx, 0x1B0008
Не знаю проверяется селектор или нет. Интелу по-барабану. Выдает gpf только на sysenter. АМДшные доки хранят молчании но
указывают что у селекторов должен быть rpl=0 для syscall и rpl=3 sysret
Попробуй скопировать на чистый 0.6.5.0 без драйверов и vrr_m
Я загружал только с дискеты, загрузку с диска не проверял.
Ещё грузил в Bochs, Quemu и VirtualPC.
> ; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
> ; and the contents of this field, plus 8, are copied into the SS register.
> ; mov edx, (os_code + 16) * 65536 + os_code
> mov edx, 0x1B0013
os_code = 8
исправил на mov edx, 0x1B0008
Не знаю проверяется селектор или нет. Интелу по-барабану. Выдает gpf только на sysenter. АМДшные доки хранят молчании но
указывают что у селекторов должен быть rpl=0 для syscall и rpl=3 sysret
Попробуй скопировать на чистый 0.6.5.0 без драйверов и vrr_m
Я загружал только с дискеты, загрузку с диска не проверял.
Ещё грузил в Bochs, Quemu и VirtualPC.
Последняя ревизия в qemu и vmware виснет (черный экран после выбора параметров в qemu, в vmware - вылет). Делал все, как ты говорил: чистый 0.6.5.0, удалил драйверы и vrr_m
Heavyiron
Qemu какой версии?
Qemu какой версии?
090
Ядро ещё очень сырое. Дело в ОЗУ. 128Мб виснет 192Мб работает. Во всех эмуляторах.
Ну да, со 192 мб загрузилось
У меня (AMD K7 Thoroughbred) результаты оказались скромней
08AF B0BB fast call
0E06 5333 interrupt
быстрее в 1.6 раза, но сами вызовы быстрее чем у Serge`а почти в пять раз.
P.S.
Подробно о SYSCALL/SYSRET здесь : http://www.amd.com/us-en/assets/content ... /21086.pdf
08AF B0BB fast call
0E06 5333 interrupt
быстрее в 1.6 раза, но сами вызовы быстрее чем у Serge`а почти в пять раз.
P.S.
Подробно о SYSCALL/SYSRET здесь : http://www.amd.com/us-en/assets/content ... /21086.pdf
Ghost
Это sysenter или syscall ? И на какой частотe? У меня 2600МГц
Это sysenter или syscall ? И на какой частотe? У меня 2600МГц
Баг с памятью исправил. Минимум надо 20Мб
Добавил в тест поддержку SYSCALL, всё на svn. Результаты такие:
08CC A0D6 fast call (SYSENTER) - то что считалось в старом тесте
0A32 4364 fast call (SYSCALL) - только для AMD
0E09 2508 interrupt
Видно, что при sysenter прирост 1.6 при syscall 1.4.
Частота 2200 (рейтинг, реально 1800Mhz), но от частоты тест не зависит, он выдаёт количество тактов. Но сюда входят и такты от других процессов, и если например запустить какую нибудь демку паралельно с тестом цифры окажутся гораздо больше. Я запускал тест после обычного запуска дистриба (панель, иконки, заставка, etc) + доска отладки + kfar.
08CC A0D6 fast call (SYSENTER) - то что считалось в старом тесте
0A32 4364 fast call (SYSCALL) - только для AMD
0E09 2508 interrupt
Видно, что при sysenter прирост 1.6 при syscall 1.4.
Частота 2200 (рейтинг, реально 1800Mhz), но от частоты тест не зависит, он выдаёт количество тактов. Но сюда входят и такты от других процессов, и если например запустить какую нибудь демку паралельно с тестом цифры окажутся гораздо больше. Я запускал тест после обычного запуска дистриба (панель, иконки, заставка, etc) + доска отладки + kfar.
Ghost
Я думал что SYSCALL быстрее чем SYSENTER. С Пнями всё просто. Привет от двадцатиступенчатого конвеера. С Прескотами должно быть ещё хуже. Команда наверное плохо распаралеливается а если ещё конвеер сбрасывается... У Р6 и Core должны быть лучше результаты по числу тактов.
P.S.
Я тестил в таком же окружении KFAR + Board
Я думал что SYSCALL быстрее чем SYSENTER. С Пнями всё просто. Привет от двадцатиступенчатого конвеера. С Прескотами должно быть ещё хуже. Команда наверное плохо распаралеливается а если ещё конвеер сбрасывается... У Р6 и Core должны быть лучше результаты по числу тактов.
P.S.
Я тестил в таком же окружении KFAR + Board
У меня система с обновленным flat_kernel загрузилась, но когда запустил тест, ушла на перезагрузку. Это было на реальном железе. То же произошло и в vmware. В qemu тест прошел для sysenter а дальше, судя по всему, тестовая прога вылетела, т. к. больше ничего не происходило и загрузка проца упала до 0.
Heavyiron
Если запускал тест с SVN мог виснуть syscall. У меня этой команды нет и тесты нормально прошли и на железе и в эмуляторе. После небольшой оптимизации стало лучше
15F1 C8EC SYSENTER
44F6 8B90 Interrupt
в среднем быстрее в 3.1 раза
Если запускал тест с SVN мог виснуть syscall. У меня этой команды нет и тесты нормально прошли и на железе и в эмуляторе. После небольшой оптимизации стало лучше
15F1 C8EC SYSENTER
44F6 8B90 Interrupt
в среднем быстрее в 3.1 раза
Who is online
Users browsing this forum: No registered users and 2 guests