Enterprise Forever  |  :HUN  |  Emulátorok  |  Topic: Időzítési problémák az emulátorokban
Author Topic: Időzítési problémák az emulátorokban  (Read 7687 times)« previous next »
Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« on: 2008.July.26. 23:53:52 »

Előszedtem a régi órajelmérő programomat, és egy picit kibővítettem, hogy részletesebb infót adjon.
A program lényege, hogy egy ciklusban számlál, azon ideig amíg a Nick megjeleníti a képernyő egy részét. Mivel a Nick órajele fix, így a ciklus lefutásának számából ki lehet számolni a Z80 órajelét.
Ha a különböző memóriavárakozásokat engedélyezzük (191-es port), akkor látszik is a lassulás a kiszámított órajelekben.
A jelen verzió a 191-es port mind a hat féle beállítása mellett kijelzi az értékeket: a ciklus lefutásának számát, ill. az ebből számolt órajelet.
Itt vannak az eredmények, 4, 6 ill. 7.12 Mhz-es valódi gépen futtattva, ep128emu alatt, és EP32 alatt (itt 7.12 nincs, mert nem beállítható tört érték).
Ami kiderült: a "nincs várakozás" ill. "1 órajel várakozás minden utasításnál" üzemmódban ugyanazt hozza a két emu. A "1 órajel várakozás minden memóriahozzáférésnél" módot az EP32 nem emulálja.
"nincs várakozás" módban minden frekvencián picit lassabbak az emuk mint az igazi gép.
"1 órajel várakozás minden utasításnál" módban 4 Mhz-en picit lassabbak, viszont nagyobb órajelen jelentősen gyorsabbak az igazinál!
"1 órajel várakozás minden memóriahozzáférésnél" módban az ep128emu 4 Mhz-en jó, nagyobb órajelen gyorsabb.




* OJ.BAS (0.74 KB - downloaded 113 times.)
* OJ.TXT (0.94 KB - downloaded 111 times.)
Logged


Enterprise Forever
« on: 2008.July.26. 23:53:52 »

 Logged

Ep128
EP addict
*
Offline Offline

Hungary

Posts: 1012


OS:
Windows XP
Browser:
Firefox 2.0.0.15


View Profile WWW
New Posts
« Reply #1 on: 2008.July.27. 00:14:09 »

Ez tök izgi! (EDC -t is rá kellene venni, hogy kicsit "hozza fel" az EP32-t... ) Igen tanulságos képek!
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Firefox 2.0.0.6


View Profile
New Posts
« Reply #2 on: 2008.July.27. 12:50:09 »

"1 órajel várakozás minden utasításnál" módban 4 Mhz-en picit lassabbak, viszont nagyobb órajelen jelentősen gyorsabbak az igazinál!
Feltételezem, hogy azért, mert a nagyobb órajel csak a Z80-ra érvényes, viszont a várakozásokat a DAVE generálja, amely ilyenkor kisebb frekvencián működik a Z80-hoz képest, és így a várakozások átlagosan hosszabbak 1 Z80 ciklusnál (az eredetileg 18 ciklus alatt végrehajtott INC HL/JR NC mindkét nagyobb órajelnél 22 illetve 24 ciklus lesz a várakozásokat engedélyezve, ami arra utalhat, hogy a várakozás egyszerűen felfelé kerekítődik 2 Z80 ciklusra, de ezt érdemes lenne más ciklussal is tesztelni). Ezt az emulátorok nem veszik figyelembe (ill. az ep128emu csak a video memória esetén).
Egyébként még az eredeti 4 MHz-es gép időzítését sem olyan egyszerű emulálni Smiley Érdemes lenne a tesztet lefuttatni más utasításokkal a ciklusban (pl. CB/DD/ED/FD prefixes utasításokkal is), I/O port művelettel (a NICK portoknál más az időzítés), és a video memóriában is különböző utasításokkal.
A kis eltéréseket (pl. 3.99 MHz 4 MHz helyett) az okozhatja, hogy a NICK frekvenciája nem pontosan annyi a Z80-hoz képest, mint amit az emulátorok feltételeznek; például az én gépemen ha a Z80 pontosan 4 MHz lenne, akkor a sorfrekvencia kb. 890100/57 Hz, és nem 890625/57 Hz, ami az ep128emu alapértelmezett beállítása (de ez megváltoztatható a konfigurációban).
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #3 on: 2008.July.28. 12:12:58 »

Elöször is egy kis javítás: végig olvastam mégegyszer Tigrian Nick leírását, amiböl kiderül, hogy amikor a Nick órajelét használjuk rendszerórajelnek, akkor egész pontosan 7.125 Mhz lesz a Z80, csak mi nem mértünk ennyi tizedesre.
Ha ezt az értéket állítjuk be az ep128emu-ban, akkor a várakozás nélküli esetben megegyezik a visszakapott HL értéke a valódi gépen mérttel.
Logged


Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #4 on: 2008.July.28. 20:43:20 »

Feltételezem, hogy azért, mert a nagyobb órajel csak a Z80-ra érvényes, viszont a várakozásokat a DAVE generálja, amely ilyenkor kisebb frekvencián működik a Z80-hoz képest
Ajaj, itt akkor most találtunk egy nagy emulációs bakit!
A DAVE a rendszerórajellel működik (ennek a fele jut a Z80-nak), így amikor turbósítjuk a gépet, gyorsul a DAVE is, ami jól érzékelhető abból, hogy a generált hangok magasabbak lesznek! Na ez az amit az emulátorok nem tudnak!
Eleve készülhettek arra, hogy 6 Mhz-es gépet is kiadjanak, mivel beépítettek egy kapcsoló bitet a DAVE-be, amivel megadható, hogy 8 vagy 12 Mhz a rendszerórajel, így biztosítva a helyes hangfrekvenciát. Ez a bit működik is az emulátorokban, csak éppen a Dave nem gyorsul hozzá turbós konfigban.
Mint a programból kiderült, ennek a bitnek nincs hatása a Z80 várakozásokra, ezért megegyezik az első három eredménysor a második hárommal.

És azért kell gyorsulnia a DAVE-nek, mert különben az A14-A21 címvezetékek nem működnének szinkronban a közvetlenül a Z80-ból jövő A0-A13-al!

Quote
viszont a várakozásokat a DAVE generálja
Mivel ez még nem volt teljesen egyértelmű, végeztem egy kisérletet, ahol kikötöttem a Z80 összes olyan lábát, ahol le lehet fékezni


A Videó RAM várakozások így is működnek, a kapcsolási rajzot megnézve egy megoldás maradt: a rendszerórajelet a Nick felezi meg a Z80 számára, és amikor éppen összevesznének a videómemórián, akkor szünetelteti a Z80 órajelét.

Viszont az egyéb beállítható várakozások így nem működnek, mint további kisérletezéssel kiderült, azok rendesen a WAIT lábat használva készülnek (Hopp itt akkor felmerül egy újabb turbó gomb lehetősége ). Ezeket tényleg a Dave készíti...
...de a hogyan az még rejtély. Én azt gondoltam volna, hogy egyszerüen 2 rendszerórajel ciklus és kész...
Quote
mindkét nagyobb órajelnél 22 illetve 24 ciklus lesz a várakozásokat engedélyezve, ami arra utalhat, hogy a várakozás egyszerűen felfelé kerekítődik 2 Z80 ciklusra
Ami érdekes anomália, hiszen azt már tudjuk, hogy turbóval a Dave is gyorsul.
Lehet, hogy nem a rendszerórajelet használja? De miféle egyéb időzítőt építettek belé?
Esetleg van a kapcsolási rajzon valami kondenzátoros cucc a Davere kötve, aminek nem tudni a szerepét, mivel nem tudni, hogy azok a lábak mit csinálnak...
Kieg: de nem, annak a kondinak zajszűréshez van köze, ha kiszedem, iszonyatosan zajos lesz a hang, ellenben a várakozások nem változnak
« Last Edit: 2008.July.28. 21:44:13 by Zozosoft » Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Firefox 2.0.0.6


View Profile
New Posts
« Reply #5 on: 2008.July.28. 22:35:02 »

Ajaj, itt akkor most találtunk egy nagy emulációs bakit!
A DAVE a rendszerórajellel működik (ennek a fele jut a Z80-nak), így amikor turbósítjuk a gépet, gyorsul a DAVE is, ami jól érzékelhető abból, hogy a generált hangok magasabbak lesznek! Na ez az amit az emulátorok nem tudnak!
A magasabb hang és időzítő frekvenciát valójában tudja emulálni az ep128emu, csak nem automatikusan, hanem a "Sound clock frequency"-t külön be kell állítani, 6 MHz-es Z80 esetén 750000-re, 7.125 MHz-nél pedig 890625-re (ami azonos a "Video clock frequency" értékével). Amit nem tud az az, hogy a várakozás ne csak 1 ciklus lehessen, mint a 4 MHz-es eredeti gépen, hanem 2 vagy esetleg több is.
Quote
A Videó RAM várakozások így is működnek, a kapcsolási rajzot megnézve egy megoldás maradt: a rendszerórajelet a Nick felezi meg a Z80 számára, és amikor éppen összevesznének a videómemórián, akkor szünetelteti a Z80 órajelét.
Ezt még érdemes lenne tesztelni, hogy a video memória várakozások mennyire pontosak az emulátorban különböző órajeleket használva.
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #6 on: 2008.July.28. 22:51:37 »

A magasabb hang és időzítő frekvenciát valójában tudja emulálni az ep128emu, csak nem automatikusan, hanem a "Sound clock frequency"-t külön be kell állítani, 6 MHz-es Z80 esetén 750000-re, 7.125 MHz-nél pedig 890625-re (ami azonos a "Video clock frequency" értékével).
A következő verzióban lehetne, hogyha átírjuk a Z80 frekit, akkor automatikusan álljon át a sound freki is? Végülis az igazin nem is lehet külön állítani.
Quote
a video memória várakozások mennyire pontosak az emulátorban különböző órajeleket használva.
Változatlan program, 64K módban futattva, azaz videómemóriában.
Van némi eltérés...


Logged


Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #7 on: 2008.July.29. 09:13:38 »

A kis eltéréseket (pl. 3.99 MHz 4 MHz helyett) az okozhatja, hogy a NICK frekvenciája nem pontosan annyi a Z80-hoz képest, mint amit az emulátorok feltételeznek; például az én gépemen ha a Z80 pontosan 4 MHz lenne
Bennem is felmerült, hogy esetleg az alkatrészek szórása miatt van eltérés, de több gépen nézve is azonosak az eredmények.
A 4 Mhz most kb 5 gépen volt nézve, a 6 és a 7.125 pedig 2-2 gépen. És korábban le is volt közölve az órajelmérő program az Enterpressben, és senki nem panaszkodott, hogy nem kerek 4 Mhz jön ki neki
Szóval lehet, hogy van eltérés ahhoz képest amit feltételezünk, de az minden gépben úgyanúgy ott van.

Quote
akkor a sorfrekvencia kb. 890100/57 Hz, és nem 890625/57 Hz, ami az ep128emu alapértelmezett beállítása (de ez megváltoztatható a konfigurációban)
Ha átírom kb 890450-re, akkor jó lesz a 4 és 6 Mhz-es várakozás nélküli érték, ekkor viszont 7123600 értéket kell használni 7125000 helyett harmadik sebességnek, hogy jó legyen.

Igazából kéne valaki, aki oszcilloszkóppal megmérné, hogy mennyi az annyi? Tigrian, hol vagy?
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Firefox 2.0.0.6


View Profile
New Posts
« Reply #8 on: 2008.July.30. 15:18:16 »

A következő verzióban lehetne, hogyha átírjuk a Z80 frekit, akkor automatikusan álljon át a sound freki is? Végülis az igazin nem is lehet külön állítani.
Ez megoldható, bár annak is van előnye, ha nem változik automatikusan, például egy 64 MHz-es Z80-at beállítva talán célszerűbb, ha nem lesz 4 oktávval magasabb a hang, még ha ez az eredeti gépen nem is így lenne (eltekintve attól, hogy ilyen nagy órajellel nem is működne a hardver Smiley).
Quote
Változatlan program, 64K módban futattva, azaz videómemóriában.
Van némi eltérés...
Ami nem túl meglepő, ugyanis a pontos emulációhoz az is fontos lenne, hogy a memória műveletek az utasításon belül melyik ciklusokban történnek, mivel a várakozás mértéke nem fix, hanem attól függ, hogy egy 890 kHz-es cikluson belül mikor próbál a memóriához hozzáférni a Z80. Bár az ep128emu ezt is emulálja valamennyire, de nem igazán pontosan, és rövid ciklusoknál nagy eltérés is lehet; nagyobb programrészeknél (pl. BASIC utasítások végrehajtása közben) az átlagos sebesség már pontosabb.
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #9 on: 2008.July.31. 00:37:38 »

nagyobb programrészeknél (pl. BASIC utasítások végrehajtása közben) az átlagos sebesség már pontosabb.
Most csináltam egy BASIC tesztet:
10 PRINT TIME$
20 FOR I=1 to 2000
30 A=SQR(I)
40 NEXT
50 PRINT TIME$
60 PING

Az igazi gépen órakártya volt így turbóban is pontos az óra, ROM bővítők: ZT 1.8, EXDOS 1.3, BASIC 2.1, epemu alatt ugyanez. Epemunál turbó frekvenciáknál beállítottam a DAVE-t is megfelelő sebességre.
Az első idő mindig a valódi gépen mért, a második az emus. Nyilván nem 100%-ig pontos mérés, de az jól látszik, hol vannak nagyobb eltérések.
A normál, minden utasításnál 1 várakozás mód:
4 Mhz: 5:53, 5:58
6 Mhz: 4:06, 3:35
7.125 Mhz: 3:22, 2:56

Nincs várakozás mód:
4 Mhz: 5:02, 5:01
6 Mhz: 3:07, 3:06
7.125 Mhz: 2:35, 2:34

Minden memóriaműveletnél várakozás:
4 Mhz: 6:32, 6:30
6 Mhz: 4:51, 3:57
7.125 Mhz: 3:58, 3:17

Video RAM (64K) mód:
4 Mhz: 7:04, 6:58
6 Mhz: 5:11, 4:40
7.125 Mhz: 4:41, 3:53
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Firefox 2.0.0.6


View Profile
New Posts
« Reply #10 on: 2008.July.31. 14:27:39 »

A normál, minden utasításnál 1 várakozás mód:
4 Mhz: 5:53, 5:58
6 Mhz: 4:06, 3:35
7.125 Mhz: 3:22, 2:56

Nincs várakozás mód:
4 Mhz: 5:02, 5:01
6 Mhz: 3:07, 3:06
7.125 Mhz: 2:35, 2:34
Ezek megfelelnek a korábbi tesztek alapján várható eredménynek, az eltérést az okozza, hogy az emulátor nem 2, hanem csak 1 ciklust vár a nagyobb frekvenciákon, bár a legelső sorban az 5:58/5:53 kevésbé érthető. Egyébként ugyanezt a programot futtatva (emulátoron) nekem lassabb volt, talán mert nem pontosan ugyanaz volt a konfiguráció.
Quote
Video RAM (64K) mód:
4 Mhz: 7:04, 6:58
6 Mhz: 5:11, 4:40
7.125 Mhz: 4:41, 3:53
Itt meglepő, hogy az emulátoron a sebesség gyakorlatilag lineárisan nő az órajellel, pedig nagyobb frekvencián elvileg átlagosan többet kéne várakozni, mert a NICK órajele nem változik. Lehet, hogy ez egy bug az emulátorban ?
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.1


View Profile WWW
New Posts
« Reply #11 on: 2008.July.31. 14:50:22 »

nekem lassabb volt, talán mert nem pontosan ugyanaz volt a konfiguráció.
Igen azt én is tapasztaltam, ha több bővítő is van a rendszerben, akkor lassabb pár másodperccel, ezért a Zozotools RL NEW utasítással mindent likvidáltam ami nem feltétlenül szükséges (ZT az órakártya kezelés miatt maradt).
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Konqueror 3.5.9


View Profile
New Posts
« Reply #12 on: 2009.June.02. 22:47:50 »

Ha átírom kb 890450-re, akkor jó lesz a 4 és 6 Mhz-es várakozás nélküli érték, ekkor viszont 7123600 értéket kell használni 7125000 helyett harmadik sebességnek, hogy jó legyen.

Igazából kéne valaki, aki oszcilloszkóppal megmérné, hogy mennyi az annyi? Tigrian, hol vagy?
Ezzel kapcsolatban itt egy egyszerű teszt program:
* nickfrq.zip (0.91 KB - downloaded 58 times.)
Ha a villogó csík nem mozdul el hosszabb idő után sem, akkor a feltételezett frekvencia pontos. Ha felfelé mozog, akkor a várakozást növelni kell, ha lefelé, akkor pedig csökkenteni.
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5611


OS:
Windows XP
Browser:
Firefox 3.0.10


View Profile WWW
New Posts
« Reply #13 on: 2009.June.03. 20:20:28 »

Ha a villogó csík nem mozdul el hosszabb idő után sem, akkor a feltételezett frekvencia pontos.
És a feltett program milyen frekvenciát feltételez? Mert nekem mindig fut a csík.
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Konqueror 3.5.9


View Profile
New Posts
« Reply #14 on: 2009.June.03. 20:29:49 »

És a feltett program milyen frekvenciát feltételez? Mert nekem mindig fut a csík.
Ha igazi gépen nézted, és gyorsan fut, akkor úgy látszik, nem jó frekvenciát tételezett fel ds_icon_redface Mindenesetre az én gépemen a második program kb. pontos. Érdekes lenne megnézni néhány gépen, hogy mennyi üres ciklussal lesz stabil, bár ha nagy eltérések vannak, akkor talán nincs is igazán jelentősége Smiley

Kisebb fórum probléma: miért az "ep128emu 2.0.6" topicba kerülök vissza innen a hozzászólások elküldése után ? ds_icon_surprised
Logged

Enterprise Forever
« Reply #14 on: 2009.June.03. 20:29:49 »

 Logged
Tags:
Enterprise Forever  |  :HUN  |  Emulátorok  |  Topic: Időzítési problémák az emulátorokban

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.14 seconds with 25 queries.
Google visited last this page 2012.May.08. 20:46:05
Follow ep4ever_news on Twitter