2016年1月29日 星期五

模擬器兩方向發展議題

過去多數模擬器採用的是直譯式的運作方式,直到現在還是一樣,但俗著近年來很多技術從實驗階段到發展成熟到普遍應用,像是最有名的JIT或是LLVM之類的工具或是概念,也影響到模擬器的實作方式,網路上開始零星(數量還不多)出現一些採用非直譯方式的模擬器,下面就是一個例子

http://andrewkelley.me/post/jamulator.html

多數是採取8bit的遊戲主機為範本,讓異質的機械碼編譯成x86原生碼.

wii模擬器Dolphin中,也看得到模擬模式中有類似含意的選項.

這是非常有趣的嘗試,不過因為技術層次比較高,多數人會先採取將較為簡單的機械碼做轉換,所以才通常是會8bit遊戲主機的模擬器來學習,但實際上如果以實用性來說,CPU 模擬的運算在古早主機中負擔比例其實很低,反來是GPU等等部分模擬代價較高,通常會這樣做多數可能是基於研究或是學習立場,並沒有真的帶來很多好處.

不過如果是近年來的進階機種,cpu模擬耗用運算可能就不低了,這時候這種效能比直譯佳的運作模式,就帶來很多好處.

這種東西其實有很多進階討論的空間,而且不單單能在遊戲模擬器上發揮,試想著ARM與X86透過編譯步驟的方式,就能快速擁有雙邊硬體的相容性,這是多夢幻的"未來"....


跟上面這種往高階領域剛好相反的模擬方式(上面是軟體發展的進步),是由於近年來硬體效能快速發展下產生的,那就是往更低的領域發展,電晶體準確層次的模擬器,也就是說它的模擬基礎是從電路邏輯層開始,這種設計方式反來耗用更高的運算資源,不過有著其他方式無法取代的優點,像是絕對準確的tinimg特性.保證原汁原味的功能等等,目前也已經開始有零星實作出現,但通常是技術宣示性質,執行效能還得做不少改善,才能到實用的地步.

想像一下如果真的是在未來,電腦主機效能強大到無法想像的地步,模擬一台主機所要做的是把遊戲主機拆解,邏輯晶片打開,拍張照,把線路layout匯出描述,接著就可以跑了,也是一件很夢幻的事情...誰知道那天何時到來?  就像是當初誰也想不到現金一台手機的效能,就打死過去一整台桌機一樣.

目前是受限效能,因為邏輯電路是平行的運作方式一層一層下去,從這層次去模擬代價是相當多倍的運算資源,不過讓我發想的倒是這種運作方式在平行運算的超級電腦上似乎還ok,又或者是近年來利用顯卡異構計算的平行處理運算資源輔助?  這似乎也是一個方向.

相關參考
http://www.mobile01.com/topicdetail.php?f=514&t=1799027
http://blog.visual6502.org/2014/10/atari-2600-simulation.html
http://psxdev.ru/news
http://hackaday.com/2014/12/18/counting-transistors-in-the-playstation/
http://sourceforge.net/projects/dice/

ideal很多,不代表我有辦法在現在去做一些想法驗證,多數還是看看資訊.整理資訊而已.


沒有留言:

張貼留言