Zárt . Ez a kérdés véleményalapú . Jelenleg nem fogadja el a válaszokat.

Megjegyzések

  • Nem ' ilyen egyszerűen véleménykérés? Végül is minden szempont lényegében egyenlő abban, amit Felhasználói tapasztalatként produkálhat.
  • Ehhez meg kell határoznia, hogy mit tekint technikai oknak. Nincs egyértelmű válasz a kérdés egyértelmű meghatározása nélkül.
  • @Raffzahn Kivonat egy másik válaszból: " A szoftveremuláció meglehetősen jól működhet, de csak interfész olyan hardverekkel, amelyekről az emulátortervező tud. A jó FPGA-alapú kikapcsolódás szinte bármilyen típusú vintage hardverhez kapcsolódhat, beleértve azokat az eszközöket is, amelyekről az FPGA tervezője nem tud semmit, ugyanakkor jobb megbízhatóságot kínál, mint a régi hardverek. " Ez jó példa technikai okokból. Nem gondolom, hogy " technikai ok " nincs meghatározva. Minden objektíven igaz, nem pedig valaki ' saját valóságfelfogása, amely leírható " véleményként ".
  • Kivéve, hogy ' ez nem technikai ok, hanem hallgatólagos használati eset, itt csatolva a ' egyéb ' hardver. Mivel ehhez mindig frissítésre van szükség (még a valódi hardver esetén is, ' ez sem az emulációra jellemző probléma.
  • @Raffzahn: FPGA eszköz használata esetén amely pontosan utánozza az eredeti viselkedést hardver szinten, nem szükséges frissítés ahhoz, hogy olyan hardverrel dolgozzon, amelyről az FPGA programozó semmit sem tud.

Válasz

Az az előny, amelyet az FPGA emulátorok általában megosztanak a szüreti hardverekkel, az a képesség, hogy olyan eszközöket használnak, amelyek a hardverrel interakcióba kerülnek, nagyon időzítéstől függően. Például, ha van egy játékpatronja a NES számára amely megszakítást vált ki minden egyes alkalommal, amikor az adott sprite első sora lekérésre kerül, egy konzol, amely felolvassa a patron tartalmát, majd utánozza, csak akkor tudná helyesen játszani a játékot, ha felismerné, mi az a patron a megszakítási vonallal dolgozott.

Az FPGA-alapú hardver általában ugyanúgy működne, ha nem is többet megbízhatóan, mint a régi hardver, de néhány furcsa furcsaságot figyelembe kell venni. Az Atari 2600 bővítőkazettáinak néhány prototípusa például arra a tényre támaszkodott, hogy még akkor is, amikor az NMOS 6502 megpróbálja magasra húzni az adatbuszt, nem képes elég erősen megpróbálni felülmúlni egy külső eszközt, amelyet megpróbál húzza alacsonyra a zsinórt, és ne sértse meg magát. Ne feledje, hogy a fordítottja nem igaz: egy NMOS-eszköz, amely megpróbál alacsony vonalat húzni, miközben egy külső eszköz magasra húzza, károsíthatja magát a kísérlet során (RIP 2600jr). Ha egy modern rekreációs rendszerhez csatlakoztatnánk egy NMOS-eszközt, amely a buszvezetékek túlhajtásának képességére támaszkodik, és a rendszer nem korlátozná a vezetékek magas oldali meghajtóáramát, az károsíthatja a külső eszközt. nem tudom, hogy ez mennyiben lenne kérdés, de mivel az ilyen technikákra támaszkodó eszközök valószínűleg ritkák, nagyon sajnálatos lenne, ha megsérülnének.

Egy másik lehetséges probléma az, hogy a vintage elektronikát gyakran meglehetősen lassan reagál a jelekre, ami azt jelentette, hogy ha egy eszköz nagyon rövid ideig adna ki egy jelet egy vezetéken, akkor valószínűleg figyelmen kívül hagynák. Néhány szüreti elektronika néha rövid impulzusokat ad ki, ha a bemenetek valamilyen kombinációja megváltozik az egyik állapot között, ahol a kimenetnek alacsonynak kell lennie, és egy másik állapot között, ahol a kimenetnek alacsonynak kell lennie. Ha egy FPGA rekreációt nem úgy terveznek, hogy figyelmen kívül hagyja az ilyen impulzusokat, akkor azok hibás működést okozhatnak az újratervezett hardveren, annak ellenére, hogy nem okoztak problémát az eredetivel.

Személy szerint szerintem az FPGA a legjobb módszer a szüreti hardverek klasszak, de a megbízhatóság gyakran problémás. A szoftveremuláció meglehetősen jól működhet, de csak azokkal a hardverekkel való interakcióra korlátozódik, amelyekről az emulátortervező tud. Egy jó FPGA-alapú rekreáció szinte bármilyen szürettel képes interfészt hardver, beleértve azokat az eszközöket is, amelyekről az FPGA tervezője nem tud semmit , ugyanakkor jobb megbízhatóságot kínál, mint a régi hardverek.

Válasz

Előszó: A kérdés összeillik véleményt kérni, mivel vélemény az, ha valaki elfogad egy emulációt, függetlenül attól, hogy a processzoron vagy az FPGA-n lévő szoftver, ugyanolyan, mint az igazi, vagy sem.


Kérdezd meg magadtól, hogy egy modern technológiájú autót vezet, hogy kinézzen mint egy SSK ugyanaz, mint az igazi vezetése? Szeretne egy 1950-es évek BMW-jével járni, annak minden hangjával, illatával és rezgésével (és minden szükséges bütyköléssel, ami szükséges a folytatásához), vagy egy 2020-as elektromos kerékpárra, amely úgy néz ki, mintha egy ilyen lenne, és klasszikus hangzást nyújt Önnek az iPod beépítéséből ?


Vándorolok, mi a különbség egy valódi hardveres, FPGA alapú hardveremulátor, például a MiSTer, és a nagy mennyiségű szoftver között emulátorok különféle rendszerekhez, modern, Windows, MacOS és Linux számítógépeken.

Ha csak felhasználó vagy, meggyőződve a modern billentyűzet és a modern egér használatáról 640 x 400 méretű kép kezelése a 4k-s képernyőn, akkor csak a szoftverre van szükség. Már egy FPGA verzió is túlzásba kerül, mivel ugyanazokat a modern eszközöket használja.

Másrészt , ha a képalkotás nem elegendő, de érezni szeretné a terjedelmes Atari egeret, a hullámzó Amiga billentyűzetet vagy a terjedelmes C64 joystickot, amelyek mindegyike valódi CRT-káprázattal jelenik meg, akkor nincs más mód az igazi megszerzése.

Egy dolog jutott eszembe, hogy a szoftveres és a hardveres emulátorok sem lehetnek elég pontosak

Mostanra azok. minden egyes részletében. A modern hardver elég gyors ahhoz, hogy lehetővé tegye a HLL szoftver használatát a pontos időzítés eléréséhez. Különösen akkor, ha az összes bemenet és kimenet egyébként emulálva van, a modern eszközökhöz hozzárendelve.

De ez számomra valaminek tűnik, a megvalósítás minőségétől függően, ami változik a különböző emulátorok között, és idővel javul a hibajavítás miatt, de nem alapvető kérdés.

A lusta programozás és karbantartás nem érvényteleníti a megközelítést. Minden célból, kivéve a hardveres valódi kezeket, nincs különbség.

A szoftveremulátorok késleltetési problémájáról is hallok, de “kicsit meglepődtem, hogy ilyesmi valóban érezhető egy számítógépen, amely valószínűleg milliószor gyorsabb, mint az emulált gép.

Talán százszor, ha egyáltalán. Ne feledje, hogy a legtöbb fő alkatrész nem érhető el sokkal gyorsabban – és ennek nagy részét a nagyobb méretű eszközök és adatigények emésztették fel.

A késleltetési probléma azóta is létezik, mint mindig. Mindig lesz néhány kijelentés, hogy láthatják / érzik a különbséget. Noha ez néhány nagyon odaadó helyzetben igaz lehet, legtöbbször szemétbe esik. Néhány mikroszekundum érzése, ha egy joystick tesztelése már többe kerülhet, egyszerűen fantázia.

Valóban van-e technikai ok a valós hardveres vagy FPGA alapú emuláció és a szoftveremuláció előnyben részesítésére?

Mi minősül technikai oknak az ön számára? A kifejezés önmagában nem egyértelmű a teljes megvalósítások összehasonlításakor.

vagy ez csak egy nosztalgia, amit a vágy tölt be, mint te valóban visszatértek a 80 vagy 90 másodperces sorrendbe?

Ültél már valaha a régi gépek előtt? Meglepő, hogy a különböző billentyűzetek érzik magukat, amikor elhagyják a mai szabványosított berendezéseket.


És akkor természetesen ott van a hardveres bütykölés is – nem igazán szórakoztató az emulátorokkal, mivel itt egy felület hozzáadása csupán néhány sort ad hozzá kód – vagy csak a konfigurati egyes esetekben. Semmi elrendezés, nem maratás, nincs forrasztás, és főleg nem átkozás és foltozás, amíg nem működik.

Válasz

Szeretnék tisztázza a kérdésben említett “FPGA emuláció” kifejezést.

Először természetesen létezik szoftver emuláció. Vegyük példaként a 6502 CPU néhány (többé-kevésbé) pontos szoftveremulátorát . Megpróbálják utánozni a valódi CPU összes külső artefaktumát, például az egyes parancsok ciklusainak számát, a memória-hozzáférések címét és még a “belső állapotot” is (inkább csak a szoftver által látható regiszterek állapotát). Mégis nincs semmi hasonló a valódi CPU-val, kezdve attól a ponttól, hogy tiszta szoftver számít, nem hardvereszköz.

Amikor a valódi 6502 bármely új funkcióját felfedezik (például új, dokumentálatlan opkódokat vagy zászlókat vagy a végrehajtás részleteit) ), beillesztésre kerül a szoftveremulátorba, mint “egy másik megvalósítandó szolgáltatás”. Ha a megvalósító számára ismeretlenek, akkor a szoftveremulátorban a valóságnak egyetlen jellemzője sem merülne fel.

Ezután nézzük meg a 6502-kompatibilis HDL magokat.Ezek valójában egy valódi digitális logikai eszközt képviselnek – vagy ennek egy modelljét (abban az esetben, ha a HDL-t szimulálják, és nem valósítják meg a valódi hardverben, például FPGA vagy ASIC). Most már valódi flipflop (vagy reteszes) tárhelyük van a CPU regiszterekhez, valós CPU busz jeleket tudnak megvalósítani, sőt az eredeti 6502 helyett a retro számítógépbe is beilleszthetők. Mégis “többé-kevésbé” a semmiből készülnek, a CPU specifikációival, amelyeket helyettesíteni kívánnak, nem pedig a belső szerkezetét. Mégis hiányoznának azok a jellemzők, amelyeket a specifikációk nem írnak le, amelyek a valódi retro CPU-ban léteznek, de a megvalósító számára még ismeretlenek.

A rekonstrukció másik szintje a HDL kialakítása lehet, a következő módon:

  1. a valódi retro CPU-t lefejtik és lefényképezik
  2. majd a netlist és a tranzisztorszintű sémákat újra létrehozzák (akár kézzel, akár néhány többé-kevésbé automatizált eszközzel)
  3. A netlist konvertálva van a kapu szintű vázlattá, majd HDL leírássá, amelyet viszont az FPGA vagy az ASIC valósít meg.

A korábbi esetekkel ellentétben ma már a valódi CPU szinte minden szolgáltatása “natív módon” valósulnak meg, mert az így létrejövő HDL szerkezete többé-kevésbé egyenértékű a valódi struktúrájával (logikai kapuk és flipflopok szintjén).

Ennek ellenére lehetnek problémák, például 6502 van néhány utasítása, amelyek hibásan viselkednek, és úgy érzem, hogy ez a viselkedés nem fordul elő természetes módon a HDL-ben.

Általánosságban úgy gondolom, hogy Minden, ami a “fordított mérnök, majd a HDL újrateremtése” fölött van, valójában emuláció , akár szoftveres, akár hardveres, míg utóbbi mód nem .

Más szóval vegyük fontolóra a régi szoftver megőrzését. Futtathatnánk kortárs hardveren is, de ha nem áll rendelkezésre, akkor a szoftveremulátorok játékba lépnek, mégis a régi szoftverdarab, amelyet végrehajtani szoktak, még mindig teljesen ugyanaz.

Most szeretnénk őrizze meg a régi hardver darabot (CPU), de az autentikus megvalósítás nem érhető el, ezért újabb technológiával újrateremtjük, de a CPU logikai felépítése pontosan ugyanaz marad.

Válasz

Csak a késleltetési kérdés megválaszolására, emulátorszerzőként:

Kivételek vannak, de az általános szabály a 80-as évek eredeti hardvereire a 90-es évek eleje, hogy a joypad és a billentyűzet bevitelének változásai szinte azonnal észlelhetők a hardveren, és miután a videó és a hang kimenik a gépből, szinte azonnal eljut a felhasználóhoz – például egy klasszikus CRT televízió esetében a raszter szintje A mostani festés szinte a gép élő kimenetét jelenti.

A hardver használatával a bemenet általában áthalad van egy Bluetooth vagy USB verem, amelyet csak bizonyos időközönként ellenőrizhet a fogadó operációs rendszer, és ha bármi történt, akkor ezt továbbítja az érdekelt folyamatnak, amely az adott ütemezőtől függően azonnal megtörténhet vagy nem.

Sok emulátor megvalósít egy fő ciklust is, amely úgy néz ki, hogy miként lehet megtervezni egy játékot:

  1. összegyűjti az összes legfrissebb adatbevitelt és továbbítja azt az emulált gépnek;
  2. futtassa a gépet egy kerethez;
  3. a következő kimeneti keretet láthatatlan pufferre festeti;
  4. a következő vsync és blokk megjelenítéséhez sorban áll;
  5. ismételje meg.

Az érvelés kedvéért képzelje el, hogy modern gépe nagyon gyors, és hogy a 2. és 3. lépés azonnali. Ezután:

  • átlagosan egy fél képkocka bemeneti késleltetés plusz bármilyen Bluetooth / USB jelzés és hozzáadott operációs rendszer – minden olyan bemenet, amely közvetlenül a keret teteje után következik be, nem kerül továbbításra a következő elejéig minden, ami közvetlenül a végén történik, szinte a megfelelő időben kerül közlésre, és a közöttük lévő késések tartománya lineáris, így az átlag félúton van; és
  • van egy további kimeneti késleltetési keret, mert a következő vsync-nél egy keretet küld el bemutatásra, majd megvárja, amíg elérkezik az idő.

Tehát ezzel az egyszerű hurkkal, ideális hardveren, átlagos esetben a késés, amikor valamit megnyomsz, és a képernyő reagál, körülbelül 1,5 képkockával több, mint a valódi hardver. És ez csak akkor van, ha a gazdagép és az emulált gépek azonos képsebességgel futnak .

A puristák azzal érvelnek, hogy néhány eredeti játék olyan finoman hangolt, miután a megfelelő számú órát tesztelték és módosították a nap folyamán, hogy az 1,5 képkocka hátrányos helyzetbe hozza őket.

Az FPGA-k általában * emulációk, függetlenül attól, hogy hogyan adják el őket, mert általában olyan személyek, akik magas szintű hardverleíró nyelven hajtják végre a specifikációt. De arra törekednek, hogy a késésből a lehető legtöbbet kihagyják – a jó minőségű a videó pufferelést teljes egészében kihagyja, a rendszer többi részét valós időben futtatja, és a bemenetet minimális késéssel késlelteti.

* minősítés hozzáadva a @lvd alábbi korrekciójának megfelelően. További színért lásd a válaszát.

Természetesen nem nehéz megoldani a legtöbb szoftveres problémát a szoftverben:

  • gyakrabban továbbítja az inputot;
  • ne ” a vsync használatával új kimenetet indíthat el a vsync számára; és
  • ne használjon kettős puffert.

Az extrémekben még versenyezhet a raszterrel is hasonló kimeneti késleltetéssel, mint egy FPGA – ha már magas -frekvenciás hurok a gyakori bevitelhez, és ha az alap hardver bármilyen olyan kimenetet támogat, amely a képernyő elszakadását eredményezheti, akkor megvan az eszköz.

Sajnos az ilyen megközelítéseket az emulátorok általában nem használják. múlt, különösen azelőtt, hogy a látencia ilyen széles körben megvitatott témává vált, és valami negatív kép megragadt.

Megjegyzések

  • Az FPGA nem mindig emuláció, legalábbis a " kifejezéssel kapcsolatban egy olyan személy, aki újratelepíti a specifikációt egy magas szintű hardverleíró nyelven "
  • @lvd a válasz javítása érdekében, tudsz konkrétabb lenni? Tudok egy kísérletről, amely a VisualChips által egy valósból kivont netlistát használta (ha a memória nem szolgál). Egy

) TIA, de ezen túl alig. EDIT: nem, várj, látom, hogy ' külön választ küldtél. Köszönöm!

Válasz

A HW vs SW számos aspektusát más bejegyzések is érintették itt, ezért ne érjen hozzájuk. Ehelyett szeretném elmagyarázni az LATENCY kérdést az enyém szempontjából, valamint az emulátorok különböző platformok kódolása során szerzett tapasztalataimat. …

Az SW emulátor készítése modern gépeken késleltetési szempontból sokkal nehezebb, mint a közvetlen I / O hozzáférési időkben volt. Otthoni számítógépek és játékkonzolok számára a lehető legpontosabban kell szimulálnunk / utánoznunk a hangot, a vizuális kimenetet és a felhasználói bemenetet. A legnagyobb probléma a hangzással van. Ez azért van, mert a hallásunk sokkal jobb, mint bármely más érzékszervünknél, és mi is érezhetjük / hallhatjuk a különbséget, ha a hangot még csak néhány ms vagy Hz. Ha a képernyő ki van kapcsolva 1 vagy 2 képkockával, akkor nem látjuk a különbséget. Akkor is, ha a bemenet késik egy kicsit, annak rendben van (az emberek többségéhez).

A modern gép architektúrában minden pufferelt (különösen a hang). Tehát a hang kimenetéhez létre kell hoznunk egy PCM adatot, amelyet továbbítunk a hang chipre és lejátszunk a DMA + DAC . Ehhez általában 2 kör alakú vagy sok kis lineáris puffert használnak. A hibamentes hangok előállításához a puffereknek elég nagyoknak kell lenniük. Például Windows rendszeren legutóbb ellenőriztem, hogy WAVEOUT legalább 20-80 ms szükséges. DirectSound need >400 ms

Most, ha az emulált program beállítja hangkimenet csak a már elhangzott hang lejátszása után jelenik meg.

Ugyanez vonatkozik az I / O bemenetre egyes platformokon, így a késések összeadódnak.

Ha a FPGA , akkor pufferelés nélkül közvetlenül hozzáférhet a hangkimenethez. Ugyanez vonatkozik a bemenetre is.

Azonban a játék beviteli késleltetésének (billentyűzet, joystick) általában semmi köze a gazdagép késleltetéséhez . A szokásos ok az, hogy az emulátorok többsége órajeleket használ az emulált sebesség fenntartásához. Tehát szimulálják a CPU-t vagy bármit, és miután elérték a kívánt számú szimulált órát alvásuk alkalmával, amíg a következő időzítő kiadásra nem kerül, Minél gyorsabb a gazdaszámítógép, annál kevesebb időre van szüksége az emulációhoz, ezért a szimuláció nem reagál a valós idejű idő nagy részére. Ez azt jelenti, hogy a szimuláció csak 1% -ában csinál valamit, és a pihenés csak Sleep(). Alvás közben az emuláció nem tud reagálni semmire. Így kihagyhatja a kulcsütéseket, a kattanásokat stb … Annak orvoslására, hogy egyes emulátorok a pufferelést újra használhatják a késleltetéshez, ahelyett, hogy figyelmen kívül hagynák a bemenetet. Az idő ellenőrzésének különböző stílusai is léteznek, amelyek teljesen kiküszöbölik ezt a problémát. További információ erről a témáról:

Válasz

A szüreti NTSC gépek (és CRT Mac-ek stb.) megváltoztathatják grafikus kimenetüket a CRT kijelző frissítésének közepén (félúton lefelé a függőleges raszteren), így a kép a valós idejű bemenetre reagálva téphető.

A nem CRT monitorokat használó emulátorok nem tudják ezt valós időben végrehajtani, és csak a következő esetben képesek hamisítani egy szakadt rasztert keret vagy mező.

És az egyetlen módszer annak tesztelésére, hogy egy emuláció pontos-e a tényleges (alapos igazság) vintage hardverrel összehasonlítva. Nézze meg, vannak-e dokumentálatlan rejtett logikai csapdák (defúzió stb.) Vagy analóg elrendezési hibák a különböző ASIC chiprétegek alatt.

Megjegyzések

  • _ " .. csak hamisítani tud … " _Volt a különbség? Nem ' egy olyan emuláció, amely az egész hamisításáról szól?
  • Nem CRT-s kijelzőn. Az LCD (stb.) Nem ' nem frissül két, egymásba sorolt, 30 képkocka mezőben, ahol a váltakozó vonalak és az ablak teteje és alja különböző időpontokban, 10 mS fölött jelennek meg. valós időben. Lehet, hogy egy régi CRT monitort tápláló FPGA pontosabb lenne, mint egy emulátor.
  • Semmi sem állítja meg az emulátor szoftvert ugyanígy. és néhányan megteszik. Végül is a 60 Hz-es képernyők mára szabványosak, lehetővé téve ugyanazt a villogást, mint a CRT. Itt nincs szükség FPGA alapú szoftverekre vagy CRT-re.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük