PTT推薦

[討論] GPU加速Transistor層的模擬器

看板Soft_Job標題[討論] GPU加速Transistor層的模擬器作者
erspicu
(.)
時間推噓19 推:19 噓:0 →:51

不想走冤枉路.... 雖然有找過資料

但找到的資料似乎是一些大學教授和硬體大廠的研界成果發表 論文也有

感覺有很高的技術門檻 門檻高就算了 主要是怕結果實際上也沒如同想像中好

想問看看有沒有已經走過這條路了 不知道通不通或是值不值得

模擬器最傳統的做法是cpu指令層的模擬 這種模擬方式好實作

但正確度要拉高到一個水準 就需要很高代價

尤其是cycle accurate的模擬問題

要100%正確 就要層邏輯閘層去模擬運算結果

但邏輯閘層運算量遠大於指令模擬 主要是因為邏輯閘層運算都是同時間平行的

這種特性很適合GPU 如果像是紅白機MOS 6502的話邏輯閘數大概有4千5百多

目前看到用一般cpu去計算邏輯閘模擬計算 非常多秒才能算出一張frame

用指令集模擬的方式 每一秒可以算出好幾百張frame 差異非常巨大

不知道用gpu來模擬FPGA那種陣列 先不提有沒有商用價值

效率能不能提升到實用價值 不知道有沒有人公司剛好有做過這研究

之前移植專案做到一半 想研究一下改用GPU平行處理來處理邏輯閘模擬

寫一寫 還沒到改寫的部分 還在JS PORTING到C#的階段就丟著

如過是死路 就算了

PS.我的理想是靠GPU模擬一張FPGA 拆晶片用放大鏡把內部邏輯描繪出來
然後燒到FPGA上 有一些骨灰迷是有在做這事情
像這網站 http://www.visual6502.org
但目前還沒看到靠GPU模擬FPGA 把電路燒進去的
現在還在移植 http://www.visual6502.org/JSSim/index.html 到C#版本


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.202.16 (臺灣)
PTT 網址
※ 編輯: erspicu (39.9.202.16 臺灣), 12/31/2020 00:44:38

labbat12/31 02:45要有hdl parser然後compiler最後大魔王scheduler

mmonkeyboyy12/31 04:12我可以幫忙哦XD XDXD

ptta12/31 06:44看Nvidia的報告,結果很驚人啊,10倍以上差距

bcew12/31 07:56要不要先討論你模擬到這麼底層的意義?各邏輯閘、各走線的ti

bcew12/31 07:57ming還是沒模擬到;如果想找模擬的加速方法,現在的軟硬體

bcew12/31 07:57協調模擬都是搭FPGA...你的做法不是不行,也許AWS的雲端FPGA

bcew12/31 07:57真的這麼做,只是就你個人意義何在?

目前一些骨灰迷 把晶片磨開 用放大鏡把裡頭線路邏輯閘等復刻描繪出來 用這層去跑是真的可以跑 就慢到炸... 如果效率能改善到基本實用程度 對模擬器發展是一大里程碑 保證硬體原汁原味 以後要模擬啥晶片 反正拆晶片 放大鏡復刻描繪就好

Holysml12/31 08:06C家有想搞過?不過尚未看到商用化的tool

C家是哪一家?

mmonkeyboyy12/31 09:13別的先不說 abstract -> cycle accurate的很難跑了

mmonkeyboyy12/31 09:14下到 transistor的 @[email protected]~ 你就想著把spice 拿來跑數位

mmonkeyboyy12/31 09:14這....XD 當然有人這樣做過啊 還可以gpu加速

mmonkeyboyy12/31 09:15但解邏輯慢到一個不行 解數值還可以 @[email protected]

mmonkeyboyy12/31 09:15GPU 不是萬能 解這種東西還不如用cpus+ fpga emu

是有查 不少國外論文有 也有成果發表

https://tinyurl.com/ycfl4lp2

但看不太懂是否達實用程度 還是目前仍屬於理論驗證.實驗室發展階段 雖然覺得這議題離我的程度有段差距 但如果行得通 仍然會想去嘗試看看 看到人家移植

https://www.youtube.com/watch?v=tVRMG6Ikrxw

※ 編輯: erspicu (36.239.97.253 臺灣), 12/31/2020 11:21:51

bcew12/31 11:41瞭解你想做的事了,這麼少的邏輯閘,直接擺進FPGA就好,小FP

FPGA有的人不多阿...一般玩家花錢買高階顯卡正常 但買FPGA除非是相關行業的 以及最終是希望可以在電腦上使用

bcew12/31 11:41GA應該還比你顯卡便宜呀,放GPU跑模擬像是在現代想打造一個

bcew12/31 11:41高效率蒸汽汽車,不是不行但方向怪怪的。

※ 編輯: erspicu (36.239.97.253 臺灣), 12/31/2020 11:57:38

wulouise12/31 16:17我對GPU不是很熟,GPU擅長平行處理,為什麼不用CPU做?

邏輯電路的運作就是平行的

※ 編輯: erspicu (36.239.97.253 臺灣), 12/31/2020 16:21:51

Apache12/31 17:30C家是cadence吧

Apache12/31 17:32至少商用沒有 然後目前GPU其實不好模擬這種

mmonkeyboyy01/01 00:31哇 那個slide 上還有黃仁勳啊XD

mmonkeyboyy01/01 00:33我人沒那麼好 我懶得解釋為什麼不行 總之就是不太行

mmonkeyboyy01/01 00:37那篇文章講的是用gpu 解 事實真是如此嗎 (笑)

mmonkeyboyy01/01 00:40國外有太多這類文章了 後來也沒怎麼做下去XD

mmonkeyboyy01/01 00:40都講講x話 沒怎麼思考就做的

你的意思是

https://tinyurl.com/ycfl4lp2

這篇教授和裡頭相關清單的人物都在講幹話? Acknowledgement Contributions from David Wang (Stanford University), Yuhao Zhu (University of Texas at Austin), Hao Qian (AMD), and Lingfeng Wang (Tsinghua University) Insightful discussions with Dr. Gilbert Chen (Sandvine), Prof. Radu Marculescu (Carnegie Mellon University), Dr. Li Shang (Intel), Xin Zhou (Intel), and Jen-Hsun Huang (NVIDIA) 然後IEEE期刊的論文在話唬爛?? 然後他們做的事情毫無意義? 我相信他們不會沒思考就做 更不會覺得沒意義 只是好奇發展程度是理論驗證和發展階段 還是真的效能已達實務上能應用階段

mmonkeyboyy01/01 00:40有可能是拿了計劃要做新方向而做

mmonkeyboyy01/01 00:41C家快有混合平台了 XD

※ 編輯: erspicu (27.52.128.32 臺灣), 01/01/2021 03:38:43

mmonkeyboyy01/01 03:49理論是理論 不考慮實際情況的文章多的去了

mmonkeyboyy01/01 03:49這篇起頭是在 2011 ICCAD 如果真做那麼好 現在早有

mmonkeyboyy01/01 03:49產品了.... 這篇我在n年前就看過了 當時有有爭論過

mmonkeyboyy01/01 03:50為什麼寫文章可以 實際做出來會有很大的落差

mmonkeyboyy01/01 03:50而且他用的方法跟你想的不一樣哦 他是拿來解現在用

mmonkeyboyy01/01 03:51CPU等解 timing問題為起始 等於你拿 gpu解graph

mmonkeyboyy01/01 03:54GPU的計算優勢先回去看看吧 又不是核多就好

mmonkeyboyy01/01 03:54核多 arm或是rv最多好嗎 @[email protected]~ gpu特性就不是這樣的

mmonkeyboyy01/01 03:59你連C家是那一家都不知道了@[email protected]~ 那 也對啦 到不意外

mmonkeyboyy01/01 04:01S家M家其實也做過這事 結論:FPGA EMU解邏輯功能才是

mmonkeyboyy01/01 04:02對的路 XD GPU可以拿來解大型網路型電路

mmonkeyboyy01/01 04:04就是解spice類transistor level還可以

mmonkeyboyy01/01 04:04最近歐洲才有公司發表這個

mmonkeyboyy01/01 04:06event-driven的在 2010年左右算紅 很多人都想做

mmonkeyboyy01/01 04:06文章也不少 但都沒有後續就是了

mmonkeyboyy01/01 04:08你可以找找 gate-level simulation on GPU

jeff4010801/01 13:12講白了你能算timing就是天才,不能就是白癡

snaketsai01/01 13:18CSM應該分別是Cadence/Synopsys/Mento Graphics?不過C

snaketsai01/01 13:18有類似產品這個我有點意

javatea01/01 14:26這篇在講什麼屎啊 你知道你自己講什麼東西嗎

你聽不懂就算了阿 目前有人就實作出來了阿 只是效率還沒達到堪用層次 很多論文和教授也有發表相關探討議題 效率是否達堪用或是商用層次是另一回事 不過這些都不是啥屎 有時候作法和理論是先研究起來放 硬體或許有一天會達到條件

blackrays01/01 17:11感覺原po不是做硬體的吧

是的 我不是做硬體的 所以之前以CPU指令集完成幾款模擬器 中間也是很辛苦 本來就需要去STUDY

※ 編輯: erspicu (27.52.128.32 臺灣), 01/01/2021 17:22:21

Neistpoint01/01 17:30你可以清楚描述你想要解決的問題嗎?

其實是寫得很清楚了 如果看不懂 代表即使看懂了問題 也很難提供啥幫助 所以如果看不懂那就也沒關係 忽略就好

Neistpoint01/01 17:32模擬器的種類很多,你指的是instruction set simul

Neistpoint01/01 17:32ator 嗎?

※ 編輯: erspicu (27.52.128.32 臺灣), 01/01/2021 17:38:56

Neistpoint01/01 17:40你喜歡6502,重寫一顆就好幹麻作反向工程從電晶體反

Neistpoint01/01 17:40向回邏輯電路再燒到FPGA?

沒有人說要燒到硬體FPGA 只是希望能夠由電腦環境模擬更低階層的GATE LEVEL 去達到更高程度的正確 至於有人會希望這樣做的理由 有一篇文章解釋得不錯

https://www.mobile01.com/topicdetail.php?f=514&t=1799027

老實說,模擬紅白機的模擬器就會模擬6502的CPU指令集和行為。6502的模擬技術, 其實一點都不稀罕。不過,這群人採取不同的手段,而且是最麻煩的方法。 傳統採用的功能導向模擬手段,設計者必須先搞清楚目標物的功能, 包含指令集、整合性週邊的功能、暫存器集‧‧‧等等。如果資訊不完全, 是沒辦法完整而正確模擬其功能。 簡單說來,要用這個手法寫個模擬器,設計者先要閱讀大量技術文獻, 做許許多多相容性測試,才能確保正確地模擬。 這群人改採不同的方法:電晶體層級的電路模擬,類似FPGA的電路模擬。也就是說, 他們不管這東西的所有功能,直接把電路抄出來,模擬整個電晶體網路的功能。 只要電路抄得對,保證是100%重現晶片功能。甚至連官方文獻沒有記載的隱藏版功能, 都能被完整重現出來。 這篇文章底下一些連結你可以參考

http://ersbroemu.blogspot.com/2016/01/blog-post.html

我寫過6502的紅白機模擬器.z80的GameBoy模擬器 你好奇可以自己去查前面的文章

#1RlvMgIy

我當然很清楚這樣做跟以前作法的差異和期待的意義 當你實作完 就會發現要達到正確 指令集層面的實作方式還是滿不夠的 至於為啥不夠 timing正確性就是一個其中問題

http://ersbroemu.blogspot.com/2015/11/blog-post.html

opcode cycle table的作法其實還不是很ok

※ 編輯: erspicu (27.52.128.32 臺灣), 01/01/2021 18:12:21

Neistpoint01/01 19:59所以你想作的是抄一顆很古老的CPU?

精確度更高的紅白機模擬器

※ 編輯: erspicu (27.52.128.32 臺灣), 01/01/2021 22:52:35

wulouise01/01 23:33我記得最近才有人重新出gameboy, 就是用fpga完全模擬

wulouise01/01 23:34https://www.analogue.co/pocket 這家都是用fpga模擬

wulouise01/01 23:36說真的你提的問題已經完全脫離效益等級,就是很深但是沒

wulouise01/01 23:36有商業領域會想鑽的領域,就是靠愛撐過去

wulouise01/01 23:37有成本更低的方式可以滿足,其他方式的探討就是純學術

ESTARRIOL01/01 23:42如果是興趣使然去研究的話,不用太在乎利益啦

ESTARRIOL01/01 23:43玩興趣開心最重要

kurtsgm01/02 03:27這篇讓我想到麥塊裡面有人做出電腦來 XDD

SkyFluid01/03 01:39想這麼做也可以, 但有件很關鍵的事你沒有注意到.

SkyFluid01/03 01:40硬體在跑的時候,並不是所有的電晶體都有作用. 但你用gpu

SkyFluid01/03 01:41模擬(emu)時,會在編譯期先決定哪些電晶體需要跑.除非能

SkyFluid01/03 01:41事先拿到testbench,不然就是全部電晶體都要emu,這是巨大

SkyFluid01/03 01:42的負擔. 同時,某條signal有上百個load是很正常的事,不過

SkyFluid01/03 01:44這會造成在emulation時的同步問題.

SkyFluid01/03 03:20有興趣的話, 你可以看一下去年CAD-contest, NV出的題目

mmonkeyboyy01/03 04:24幫樓上補一下 是ICCAD 的contest

Boska01/18 00:32跪著看