[SharpMZ] Mam tuseni, ze letos na podzim porostou...

Michal Hucik - ORDOZ ordoz na ordoz.com
ter Z 22 21:08:35 CEST 2015


Jak jsi mountoval image do FDD?

Popravde jsem si rikal, ze pouziti praveho tlacitka mysi bude jedna z 
prvnich veci, ktere uzivatel sam od sebe vyzkousi... Mozna bych mel pri 
startu programu napsat do console povidani o tom, at uzivatel zkusi 
sahnout na prave tlacitko nad oknem emulatoru.


Pokud se ti vsak program po Alt+D slozi, tak mas podle mne bud poskozeny 
nejaky soubor emulatoru, ci runtime knihovny, nebo nejaky jiny problem 
ve svem PC.

Mezi 1900 a 1200 % bych nevidel az tak veliky rozdil - tam uz zrejme 
narazis na nejake HW limity.
Ja u sebe poustim emlator na procesoru i5-3570K, pretaktovanem na 4.2 
GHz a na Nvidia MSI 970, ktera je uz od vyrobce take pretaktovana ... Na 
takovem zeleze uz se neda vymlouvat nestihajici HW.

Uz v prosinci jsme se tady bavili o tom, ze kompilator jako takovy na to 
zrejme nebude mit az tak veliky vliv.
Vyznamny vliv bude mit zapnuta optimizace kompileru. Ja pouzivam O2. Ze 
zacatku jsem chvili pouzival i O3, ale s pribivajici funkcionalitou to 
pri teto optimizaci uz zacalo padat. Jinak uz v prosinci jsme se tady 
bavili o tom, ze kompilator jako takovy zrejme nema prilis velky veliky 
vliv na to, zda ta emulace bezi ve stovkach, nebo v tisicich procent.

Ja jsem se pri prepisovani jadra emulatoru alespon ze zacatku snazil 
stale myslet na to, aby se v mistech, kde program travi nejvice casu 
vyuzivala co nejvice cache procesoru.
Ze zacatku jsem pri psani neustale meril jak se na vykonu projevi jedna 
metoda, pak treba jina... Spoustu casti programu jsem mel takto napsano 
v nekolika ruznych variantach a proste jsem hledal cestu, dokud jsem 
nebyl spokojeny. Pozdeji uz jsem zas tolik neoptimalizoval - neco si 
muzu nechat i na pozdeji...

Tech zminenych 19 000% dosahnu tak, ze bypasuju generovani 1M1 hodin, 
ktere se ted produkuji zbytecne pomalou cestou, kdy uplynuly GDG cas po 
kazde instrukci vydelim 8 a s kazdou sestupnou hranou 1M1 volam event v 
CTC.
Lze se tomu vyhnout tak, ze si pri prvni udalosti v CTC spocitam kdy 
dojde k nejake povsimnuthodne udalosti a do te doby si CTC nevsimat. 
Pouze v pripade, ze by se program zeptal na stav citace, nebo by se 
zmenilo nastaveni, tak dopocitat aktualni stav. Verim, ze tak se k tem 
19 000% priblizim i s funkcnim CTC.

No a samotne mereni pak probihalo na instrukci JR 0xfe - tedy v podstate 
pri nulove zatezi.

Kdyz jsem poustel jen samotne CPU + pamet a pocitani GDG taktu, tak to 
melo odhadem rekneme treba 70 000 % (to cislo uz si fakt nepamatuju).

Jinak pro zajimavost par drobnych mereni na mem HW:

5 750 %  monitor s neprimountovanym diskem ve stavu "Make ready FD"
4 870 % monitor po 'M' - blikajici kurzor
6 020 % monitor - vypis pameti: * D0000FFFF (cely vypis pameti trva cca 
7.1 sekund )
4 720 % blikani borderu: ld bc,0x06cf; out (c),a; inc a; jp radek_s_out
5 200 % nastartovana cp/m s mzrun
4 040% Flappy intro
3 160% Interkarate - hra

Ty cisla jsou asi +/- 150 % v zavislosti na tom co ktery virus na 
desktopu delal zrovna ve chvili, kdy probihalo mereni.

Rychlost vsak nebyla hlavnim kriteriem. Chtel jsem zachovat pokud mozno 
maximalni moznou presnost emulace na zaklade poznatku, jake jsem o 
Sharpu doposud ziskal. I kdyz treba vim, ze v nekterych mistech mam 
haluz, tak je o tom alespon zminka v poznamce ve zdrojaku.
V me emulaci se provadi synchronizace vsech signalu nejen mezi 
instrukcemi, ale i uvnitr LD, IN, OUT, PUSH, POP, atp... Takze je 
zohlednen i pocet taktu, ktere ubehly od zacatku instukce. Pokud napr. 
napisete program, ktery bude cekat na stav HBLN, ci HSYNC a podle nej 
provede nejakou zmenu na obrazovce, tak pozice paprsku v ose X bude v 
podstate na stejnem miste, jako v realnem Sharpu, o cemz se jinym 
emulatorum muze jen zdat ;)

Michal


Dne 22.9.2015 v 18:00 Miloš napsal(a):
> Ak sa nemýlim, v emulátore nie je žiadne menu ako bolo v staršej 
> verzii. Existuje nejaký zoznam klávesových skratiek? Skúsil som, či je 
> zabudovaný aj nejaký debugger, ako v Zdeňkovom emulátore a stlačil som 
> Alt+D. Program okamžite zhavaroval. A teraz len moja domnienka: 
> Debugger bol odstránený, ale klávesová skratka ostala a snaží sa 
> otvoriť neexistujúci formulár?
>
> A ešte mám otázku. Ty si zrejme dosť skúsený programátor, aby si mi 
> vedel odpovedať. Tvoj emulátor má u mňa v monitore 1900 %. Môj má cca 
> 1200 %. Môže byť aj prekladačom až taký rozdiel rýchlosti? Teoreticky 
> pri rovnakom kóde (ideálny prípad), či by mohli byť až také rozdiely v 
> rýchlosti? Písal si, že si sa dostal na 190000 % a to u mňa nehrozí 
> ani keby všetko povypínam a beží len čistá emulácia Z80. Ja to 
> programujem v Lazarovi (neslušne povedané free verzia Delphi).
>
> Miloš
>
> Dňa 17. 9. 2015 o 21:28 Michal Hucik - ORDOZ napísal(a):
>>
>> ... emulátory jako po dešti :)
>>
>> Posledních pár měsíců jsem pilně pracoval na zpřehlednění a zrychlení 
>> emulátoru MZ-800. Nakolik se mi to v obou směrech povedlo můžete 
>> posoudit sami http://mz800emu.sourceforge.net
>>
>> Michal
>>
>> PS: Jakube, tak doufám, že teď už nebudeme vepři :)
>>
>>
>>
>> _______________________________________________
>> SharpMZ mailing list
>> SharpMZ na mail.ordoz.com
>> http://mail.ordoz.com/mailman/listinfo/sharpmz
>
>
>
> _______________________________________________
> SharpMZ mailing list
> SharpMZ na mail.ordoz.com
> http://mail.ordoz.com/mailman/listinfo/sharpmz

------------- dal st ---------------
HTML příloha byla odstraněna...
URL: http://mail.ordoz.com/pipermail/sharpmz/attachments/20150922/ec860203/attachment.html 


Dal informace o konferenci SharpMZ