Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт май 22, 2018 5:41 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 15 сообщений ] 
Автор Сообщение
 Заголовок сообщения: что будет дальше?
СообщениеДобавлено: Пн июн 20, 2005 7:54 pm 
у меня вопросы к людям, которые занимаются изменениями ядра
1) нас ждет менеджер памяти - значит, обязательное включение страничной подкачки
2) будет ли своп на винте
3) сейчас переключение потоков (в том числе и прерываниями) идет через шлюз задач...можно ли вернуться к схеме шлюзов прерываний (ядро - кольцо 0, приложения - кольцо 3)
4) может, стоит разрешиться приложениям адресовать I/O с помощью карты ввода вывода, запрещая в ней вывод на DMA каналы и IDE каналы (реализовав это в ядре)


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 20, 2005 11:03 pm 
1) Да станичная адресация будет.
2) Пока не вижу такой необходимости, нет приложений, требующих настолько значительных ресурсов. К тому же реализация свопа возможна лишь после 100% уверенности в драйвере файловой системы.
3) Вопрос к Халявину Андрею.
Зачем? Код ядра должен сам определять такие вещи, иначе это будет не ядро, а решето.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 21, 2005 6:10 am 
Приложения и сейчас могут, зарезервировав порты, использовать их напрямую за счет битовой карты ввода-вывода.
На счет шлюза прерывания - сделать это возможно, но достаточно трудно - нужно изменить код ядра в большом количестве различных мест, и причем правильно, поскольку малейшая ошибка приведет к зависанию :( . В отдаленной :? перспективе это можно сделать.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 21, 2005 6:23 pm 
1) по-моему, не так уж это и сложно...просто тогда не надо включать страничную поддержку...кстати, хотел у тебя спросить (Халявин) - при работе с включенной страничной поддержкой намного сильнее греются процы? может, имеет смысл для ноутов использовать старые дистры или выпускать новые с альтернативными ядрами?
2) а почему до сих пор фигурирует режим 1280x1024???? ведь Vesa 2.0 на картах Nvidia выделяет по 4 Мб - что явно не хватит...а как другие карты в режимах vesa 2.0???? кто знает?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 21, 2005 9:30 pm 
kiwi_mani_snova
Ну, не знаю у меня на старом компе видюха AtI RageXL 8 метров памяти и работает на как раз только в Vesa2 никак не выше, однако 1280*1024 держит нормально.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 21, 2005 10:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Незнаю где оставить свое сообщение,но раз уж тут народ говорит о видео,то наверное здесь.
Я долго думал - как увелить скорость PutImage для слабых компьютеров.Полез в исходники ядра,изучил файл vesa20.inc.Удалил несколько команд из тела цикла 32 и 24 битного PutImage(сравнение с esp и все с ним связанное).Врезультате тело цикла стало на 3 такта короче.После долгого тестирования никаких глюков или отклонений от нормальной работы я необнаружил.Увеличение FPS я ненаблюдал,потомучто при моем мощном копьютере скорость ограничивается пропусканием шины(больше чем 150 кадров в режиме 640*480 получить неудается).Но думаю на слабом компьютере увеличение скорости будет наблюдаться.Что вы об этом думаете ?( Я НЕ ПРЕТЕНДУЮ НЕ НА ЧЬИ АВТОРСКИЕ ПРАВА!)

ИЗМЕНЕННАЯ ЧАСТЬ:
mov edi, [putimg.real_sy]
align 4
.new_line:
mov esi, [putimg.real_sx]
align 4
.new_x:
mov eax, [ecx] ; ecx = RRBBGGRR
mov [edx], ax
shr eax, 16
mov [edx+2], al

add ecx, 3 ;[putimg.source_bpp]
add edx, 3

dec esi
jnz .new_x

add ecx, [putimg.line_increment]
add edx, [putimg.screen_newline]

dec edi
jnz .new_line
.finish:
add esp, putimg.stack_data
popad
xor eax, eax
ret

put_image_end_32:
mov edi, [putimg.real_sy]
align 4
.new_line:
mov esi, [putimg.real_sx]

align 4
.new_x:
mov eax, [ecx] ; ecx = RRBBGGRR
mov [edx], eax
add ecx,3; [putimg.source_bpp]
add edx, 4
dec esi
jnz .new_x

add ecx, [putimg.line_increment]
add edx, [putimg.screen_newline] ;[BytesPerScanLine]
dec edi
jnz .new_line
.finish:
add esp, putimg.stack_data
popad
xor eax, eax


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 22, 2005 3:19 am 
andrew_programmer
Надо будет попробовать на моем Duron950(шина 100, память DDR), а потом попробую на Cyrix233(шина 75, память - SDRAM). Кто его знает, может, выжмем еще 5-10%. :-)


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 22, 2005 10:42 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Я посчитал и получилось,что на Duron950 fps не увеличиться ,а на cyrix233 должно.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 22, 2005 9:34 pm 
kiwi_mani_snova
Я понял, почему у меня видюха держит 1280*1024 при Vesa2.
Дело в том, что MeOS для Vesa2 использует 24 бита, а не 32. Соответственно 1280*1024*24=3.75 Мб.

andrew_programmer
Обидно, но есть таки глюк в твоем коде на обоих моих компах. Если таскать окно приложения, то все иконки оказываются поверх него.
А результаты следующие, проверял в MGB.
Первая цифра до твоей доработки, вторая после:

Duron950
800*600*32-Vesa3
window 143/142
bar 2261/2260
line 37683/37825
text1 18352/18280
text2 14416/14346
number 55878/55783
pixel 392120/392715

Cyrix233MX(M2)
800*600*24-Vesa2
window 31/30
bar 276/277
line 5320/5325
text1 2477/2500
text2 1595/1602
number 8494/8600
pixel 120445/121069

Поскольку +/- 0.5% точно можно отнести на погрешность измерения, то выводы такие. Duron никакого ускорения, Cyrix прирост в text1 +0.93%, прирост в number +1.25%, прирост в pixel +0.52% и это все прирост без учета погрешности измерения. Но, к сожалению, весь прирост обламывает глюк с иконками.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 23, 2005 12:48 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Ускорение рассчитано исключительно на PutImage - именно там(даже с глюком) должен быть значительный прирост скорости.Если 3 такта сэкономлено и раньше FPS было 50 кадров в секунду,то получаем: 3*(640*480)*50=46 МГц cэкономленой тактовой частоты процессора или прирост на 7-10 кадров.

MGB совершенно не измеряет скорость PutImage!!!

Чтобы измерять FPS я написал специальную программу.Она пишет (в левом верхнем углу окна)сколько кадров было выведено за секунду.Просто для стопроцентной однозначности попробуй измерить спомощью нее.Вот код программы:


use32
org 0x0

db 'MENUET01'
dd 0x1
dd START
dd I_END
dd 0x1000+640*480*3+0x1000
dd 0x1000
dd 0x0
dd 0x0
;ќв  Їа®Ја ¬¬  ®ЇаҐ¤Ґ«пҐв FPS ¤«п PutImage а §¬Ґа®¬ 640*480 ЇЁЄбҐ«Ґ©
;-----------------------------------------------------------
;----------¤«п вҐбвЁа®ў ­Ёп ­ ¦¬ЁвҐ Їа®ЎҐ«------------------
;-----------------------------------------------------------
; ўв®а Їа®Ја ¬¬л Andrew_programmer ®­ ¦Ґ Ђ­¤аҐ© €Ј­ в쥢
;б Ё¤Ґп¬Ё Ё«Ё ў®Їа®б ¬Ё Є® ¬­Ґ ЇЁиЁвҐ ­  e-mail polynki@mail.ru
START:
mov eax,40
mov ebx,111b
int 0x40
;use only keybord of scan-codes
mov eax,66
mov ebx,1
mov ecx,1
int 0x40
pm:
mov eax,47
mov ebx,5*65536
mov ecx,[frame]
mov edx,100*65536+5
mov esi,0xffffff
int 0x40
;
still: mov eax,23
mov ebx,1
int 0x40
cmp eax,1
je drawwin
cmp eax,2
je key
cmp eax,3
je button
jmp still
;-------------------------------------------
key:

mov eax,2
int 0x40
cmp ah,57
je fpst
cmp ah,1
je close
jmp still
;close program and exit
close: mov eax,-1
int 0x40
;main cycle(fps)

fpst:
call clock
mov eax,[time]
mov [time1],eax
mov [frame],0
cycle:
mov eax,7
mov ebx,0x1000
mov ecx,640*65536+480
mov edx,3*65536+20
int 0x40
add [frame],1
call clock
mov eax,[time]
sub eax,[time1]
cmp eax,100
jl cycle
jmp pm
;-------------------------------------------
button:mov eax,17
int 0x40
cmp ah,1
jne still
mov eax,-1
int 0x40
;--------------------------------------------
drawwin:mov eax,12
mov ebx,1
int 0x40
;аЁб㥬 ®Є­® § ¤ ў п ўбҐ ­Ґ®Ўе®¤Ё¬лҐ 梥в 
mov eax,0
mov ebx,50*65536+650
mov ecx,50*65536+500
mov edx,0x02AABBCC
mov esi,0x805080d0
mov edi,0x005080d0
int 0x40
;ЇЁиҐ¬ § Ј®«®ў®Є ®Є­ 
mov eax,4
mov ebx,5*65536+5
mov ecx,0x10ddeeff
mov edx,name
mov esi,7
int 0x40
;аЁб㥬 Є­®ЇЄг § ЄалвЁп ®Є­ 
mov eax,8
mov ebx,(650-19)*65536+12
mov ecx,5*65536+12
mov edx,1
mov esi,0x6688dd
int 0x40
jmp still
;---------------------------------------------------------------------------
;get time in 1/100 sec
clock: mov eax,26
mov ebx,9
int 0x40
mov [time],eax
ret
;------------------------------------------------------------------
time dd 0
time1 dd 0
frame dd 0
name db 'testfps'
I_END:


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 23, 2005 9:11 pm 
andrew_programmer
ты плохо читаешь перечитай мои слова - глюк на обоих комперах!


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 23, 2005 10:28 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Извини,если обидел.
Про глюк я знаю(после твоих слов я его проверял и исследовал),но что-то отношусь к нему пренебрежительно(в 50% перетаскиваний эконки не рисуются поверх окна).
А MGB действительно не измеряет скорость обновления экрана(FPS).


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 27, 2005 6:08 pm 
тестировал MGB...под ядром 0.72 грандиозный отрыв от Колибри 3, Колибри 4 уже начало подтягиваться...надо возвращаться к схеме шлюзов прерываний, а не к шлюзам задач...Халявин, может, напишем вариант 65 или 72 ядра, только с 3-м кольцом для приложений? просто при каждом прерывании сейчас 104 байта как минимум в TSS копируется туда -сюда....тормознуто...Вилле изучал шлюзы задач, а мы отдуваемся(((


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 02, 2005 1:17 pm 
Это не так просто. Переписывать придется много и код нужен будет извращенный.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 15, 2005 1:30 am 
Не в сети

Зарегистрирован: Ср май 18, 2005 7:27 pm
Сообщения: 1001
Я читал IRC лог (больше 13 тысяч строчек :( ) и статьи о MeOS в "Мой компьютер" и здесь суммирую пожелания Вилле и украинского автора:
- перейти от GDT к LDT для каждого процесса
- увеличить лимит количества процессов (сейчас в MeOS он равен 255, а например в Syllable - больше 16 миллионов).
Поскольку Андрей занимается переделыванием ядра, то возможно он сможет это сделать.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 15 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB