Forum

Z PMD 85 Infoserver

:: späť na zoznam tém ::
Správa
Autor  Autor ::  Vldo
Poslaná  Poslaná ::  09.07.2009 22:02:11
Predmet  Predmet ::  Rychlost emulace
Ahojky, docela by me zajimalo, jak mate ve svem emulatoru vyresenu rychlost emulace. Jde o to, ze snahou dobreho emulatoru je i emulace rychlosti skutecneho PMD, tedy 2.048MHz... ale kazde PC, na kterem emulator pobezi, je jinak rychle...
dotaz tedy zni: Jak zajistujete tu spravnou rychlost emulace?
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  10.07.2009 08:59:48
Predmet  Predmet ::  Re: Rychlost emulace
Už som to tu myslím vo fóre kedysi dávno spomínal.
"Na pozadí" beží presný multimédia timer, v ktorom sa vykonáva všetko, čo je potrebné, aby bolo správne načasované. Timer sa spúšťa každých niekoľko milisekúnd. Pôvodne to bolo každých 20ms, ale keď sme začali laborovať s ovládaním reálneho HW cez LPT (napr. BT 100), tak sa ukázalo, že ten interval je príliš dlhý. V súčasnosti je ten interval dlhý iba 1 ms.
Samotná emulácia i8080 funguje tak, že sa v obsluhe Timera vykoná toľko T-cyklov, koľko by sa ich reálne vykonalo za 1ms, čo je pri 2,048MHz 2048 T. Samozrejme, nie je to tak presne, pretože inštrukcie trvajú rôzne dlho a pochopiteľne sa to nedá presne "napasovať", tak sa robia rôzne "korekcie". Podstatné ale je, že PC vykoná tých 2048 T za zlomok tej 1 ms a to, koľko to z tej 1 ms zabralo, informuje veľmi-veľmi približne ten percentuálny údaj na dolnej lište. Približne preto, že to zahŕňa aj ďalšie "drobnosti okolo".
Takže z uvedeného vyplýva, že (takmer) nezáleží na rýchlosti samotného PC a rýchlosť emulovaného i8080 bude v podstate stále rovnaká. Samozrejme, ak by bolo PC veľmi pomalé, interval 1ms by mohol byť vážny problém, pretože PC by za tú 1ms nemusel stihnúť vykonať zodpovedajúci počet T-cyklov a tým by sa emulácia "zadrhávala" a PC by bolo zrejme vyťažené na 100%.
:: späť na zoznam tém ::