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

作者: expiate (夜露死苦)   2021-01-03 03:44:04
感謝你提供的網站http://www.visual6502.org
這提供非常多的訊息與實作的細節,也讓我有機會能更理解你的想法
我先稱它為virtual chip來做區別。
我看了FAQ與slide,裡面大致就回答這群作者能做到什麼程度,
我把我認為重要的條件列在下面:
- if it has only one or two metal layers and was made before about 1985
- Before ~1980, chip design was a very manual process
- MOS 6502: there are "3510" trnsistors
- The simulator is running an idealized "digital" circuit based on our
model of the chip's network of transistors and wires.
- It does not account for "analog" behavior
(resistance, capacitance, leakage), has no propagation delays, and
transistors switch on and off instantaneously.
綜上所述,我覺得你會混用transister-level與gate-level真的不能怪你
因為這真的是時空背景不同,但照歷史脈絡來看也能稍微理解為什麼
TSMC/UMC晶圓代工與EDA產業的興起了:因為製程發展與電晶體數量大增
那如果你要照這群作者的方法做逆向工程在現今的晶片可行嗎?
我覺得人眼要識別現今的polygon(網頁所用的詞)及連接,可能要有寫輪眼
不過我layout學得很差,也許真的有能人可以做到,但那個數量級太大了
這網頁有提到他們想要自動化但是失敗(How did automatic vectorization fail?)
所以我推論目前人必須很大程度參與到這逆向工程中。
對這我有個想法,這個project是在2010左右的成果,而CNN(卷積神經網路)在
ImageNet 2012比賽取得壓倒性的勝利,時至今日computer vision已經很成功了
也許在這部分,CNN可以做到很好,然後把比較難辨識的再交給人類來做
可是呢,這又會需要foundry廠的know how了,因為你需要訓練用的資料與標籤
所以你想繼續這條路,我給的建議是看看有沒有人在做半導體的computer vision。
我知道S家有在做P&R的那方面的,也許C家做更多
然後拿他們的模型來做逆向工程並請專家幫你做最後的驗證
之後的工作基本都可以用程式來解決了
至於有無法律問題就看看有沒有人在你寫程式時來查水表了XD
我寫到這,我大概也能理解為什麼沒人做virtual chip emulator了
如果chip簡單人類可能還可以做,但是現在的chip真的太大太複雜了
還有3D IC這種多一個維度的,加上公司求快。除非是要偷設計,
不然成本太高了太不經濟了。
希望能給你一些幫助。
※ 引述《expiate (彎曲屎殼郎)》之銘言:
: 我有把你下面推文的兩個連結看了以確定我盡量能理解你的目的。
: 文中你提到transistor-level與邏輯閘層(gate-level)模擬,
: 這兩個用詞在你的語境下所代表的意思有點模糊,
: 我用我的理解以及上篇crossbar的觀點來定義一下:
: - transistor-level:
: 我認為你指的是電晶體電路,也就是layout或是spice
: 模擬用來跑電氣特性,像是增益,匹配或是SNR
: 裡面的基本元素就是半導體的材料物理模型(非我專長請專家補充)
: - gate-level:
: 邏輯閘電路,我這邊理解的話就會指cell-based design
: 裡面的電路表示會由boolean operator或是更複雜的像是
: AOI (And-Or-Inverter),基本上世界上的IC design house
: 的design flow主要都是走這條。
: /*** 我假設你有unlimited resources,要多快有多快的CPU,GPU和memory ***/
: 然後我只就數位電路作為我的目標,類比電路我是覺得更難就不深入了
: 基本上transistor-level的模擬我覺得要行得通,必須半導體物理材料模型要準
: 以及RC (resistance capacitance) model要準。也就是內部電氣特性與外部
: routing的特性都要有準確的模型去計算才有可能實現。
: 如果你只是對於前幾代製程的產品,我猜也許會有已經很成熟及準確的模型可以使用
: 但我很懷疑是否有公開的資訊你可以拿到,因為基本上這都是foundry的know how。
: 也許學校有資源可以讓你接觸,或是真的有很老亦或教學的的模型供你使用
: 假設你有了,其實就是把transistor-level的電路用這些模型表示
: 然後把彼此的輸入/輸出 接好跑模擬即可。最後在針對電氣數值判斷0/1
: 這是我覺得最困難的部分,完成後就都是0/1世界了。
: Gate-level的模擬跟對應的library有很深的相依性,也就是foundary所提供。
: 而且所需的電氣特性都包含在每個cell裡的table,所以像是slack或是slew
: 都可以快速查表得知。而EDA公司提供的sign-off product就是保證他們的驗證
: 結果跟foundry廠生產出來的晶片會是一樣的。
: 這就間接的指出其實可以透過gate-level模擬來實現你的目標。
: 然後這也是為什麼FPGA會作為驗證工具的原因。只要在FPGA功能驗證完成,
: 剩下的就是跑flow然後tapeout,不用太擔心會不一樣。而且跟模擬比起來快太多了
: 你可以試試用VCS或是NCVerilog跑個一百萬cycle就可以感覺為什麼唯快不破了
: 通常IC design house在tapeout之前都可以估自己只能跑幾次模擬。
: 也就是說bug或是timing issue如果不能在這幾次模擬中解決就等著被X吧
: 以上是我覺得可以實現你目標的方法,如果真的能reverse回來的話。
: 下面是我覺得為什麼GPU無法幫助太多的理由。
: 就我所知,目前沒有EDA公司的產品裡有使用GPU做加速,也許有功能但可能賣不出去XD
: 大部分都還是仰賴CPU及memory作為計算的主力。
: 這是因為GPU主要的計算典範是SIMD (Single Instruction Multiple Data)。
: 拿現今最流行的深度學習做例子,訓練的步驟很明確feedforward,backpropagation
: 底下的計算主要都是矩陣運算,只是每次要做運算的data不一樣。
: 回過頭看gate-level電路模擬,如果把電路看成神經網路不也可以用GPU加速?
: 嗯其實GPU加速電路模擬真的是很容易想到,cuda已經出來十幾年了,所以我想
: 肯定有人嘗試但是沒成功或是效果不如預期。這也是大家噴這麼凶的原因。
: 不過我覺得大家太嚴苛了,難得有人正經問問題其實可以多點耐心分享所學的。
: 所以問題就該是為什麼GPU不能像神經網路一樣很好地加速電路模擬?
: 我個人思考的結果是:大部分的電路模擬不是線性的
: 我的思路是把combinational logic電路當作是神經網路,
: 而暫存器就是神經網路的layer。我能用矩陣來表示combinational logic嗎?
: 我覺得光是處理gate個數與gate該在矩陣哪個位置我就覺得不好處理
: 當然你可能有別的思路,可是本質上你還是會受限於GPU計算的本質:
: 不擅長做複雜(heavy control dependency)的計算。
: 這也是我覺的目前EDA公司還是以cpu為主要算力的原因。
: 如果你有興趣,你可以試著朝high performance computing/parallel computing
: 做更深入的理解。
: 最後,我只是拋磚引玉吸引炮火。
: 大家不要為難原po,我其實很欣賞這樣願意花時間苦幹的人了
: 所以歡迎大家來噴我吧!最好發戰文,大家一起學習!
: 也期許原po日後有什麼進展歡迎分享給大家。
: ※ 引述《erspicu (.)》之銘言:
: : 不想走冤枉路.... 雖然有找過資料
: : 但找到的資料似乎是一些大學教授和硬體大廠的研界成果發表 論文也有
: : 感覺有很高的技術門檻 門檻高就算了 主要是怕結果實際上也沒如同想像中好
: : 想問看看有沒有已經走過這條路了 不知道通不通或是值不值得
: : 模擬器最傳統的做法是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#版本
作者: mmonkeyboyy (great)   2021-01-03 04:28:00
其實用簡單數學算一下放下電路RAM大小就知道可行性了
作者: Neistpoint (Neistpoint)   2021-01-03 10:22:00
分析得很透徹
作者: erspicu (.)   2021-01-03 11:34:00
這種拆磨晶片靠顯微鏡或是放大鏡看內部電路去描繪的事情常理推斷只適合骨灰級的一些晶片 也不是我感興趣的事情我目前在做的只是把這網站的專案從JS版移植到C#內部邏輯閘.相連定義.接腳 他們都完全整理好了可能是因為工作領域習慣性去預設的目的設想不同即使我不只一次提及 只是一個在電腦上能夠更精確的紅白機模擬器.. 還是有許多人會做發散式假設js版的速度可以算到大概10"Hz" 非常慢有人用C++改寫優化後到達10000Hz 但還是太慢實機是3.5Mhz看CODE內容初步來看主要是FOR迴圈處理一些陣列資料以前有用過GPU處理影像 有前後次序性相依關係的
作者: mmonkeyboyy (great)   2021-01-03 11:55:00
我想別人的推文你都沒看懂 你只是一直在講你的想法是很不錯的想法 加油呦~~~~好棒棒捏~你也只是拿別人的c++來優化 看來你也不一定知道問題在那裡 另外gpu如果可以就這樣scale上去真的就是太美好了 至於到底gate-level simulation 在解什麼我猜你也不在意吧
作者: erspicu (.)   2021-01-03 11:59:00
可以避開前後相依次序性關係問題的話 多核就可以加速
作者: mmonkeyboyy (great)   2021-01-03 12:00:00
...........你以為只有你知道 ?你以為電路就不是要靠上一級輸入來做
作者: erspicu (.)   2021-01-03 12:01:00
然後這篇花很多篇幅在寫磨開晶片後的程式辨識 問題是
作者: mmonkeyboyy (great)   2021-01-03 12:01:00
你天真以為業界沒人知道沒人想過 沒人試過?
作者: Apache (阿帕契)   2021-01-03 12:01:00
這篇沒有抓到原po的點,但是原po的推文也是...
作者: erspicu (.)   2021-01-03 12:02:00
輸出整理好好的了... 而且這種方式本來就只適合骨灰產品
作者: mmonkeyboyy (great)   2021-01-03 12:02:00
也不是我寫得啊 文主只是也就....他肯定是懂得人我第一個推文就告訴你了 你用數學算算就知道多快了gate數可以推出data量&使用memory量 套上GPU硬體能力 還有你要計算的東西 就算是完美的平行運算你等於是一個原來的指令集 在一顆2GHz cpu上要跑2M你只有1000cycles可以解你說要做gate-level simulation 你可以自己看看有多少層要做 (每一層最少要1cycle) gate->gate就是一層其他的運算 搬資料的耗損什麼我就不說了
作者: Apache (阿帕契)   2021-01-03 12:10:00
他會說他只要變快就好我覺得前面那篇不錯 SIMD能加速的問題其實很少
作者: erspicu (.)   2021-01-03 12:11:00
我是真的不知道該怎麼算 你要不要分享一下你的算法
作者: mmonkeyboyy (great)   2021-01-03 12:12:00
我n年前就跟某廠在做這個事了 也沒看我賺到錢還在這
作者: erspicu (.)   2021-01-03 12:12:00
光靠單核C++ CODE可以到1萬 實機350萬 效率如果能改善到
作者: erspicu (.)   2021-01-03 12:13:00
350倍也就算及格了... 當然也可能根本到不了
作者: Apache (阿帕契)   2021-01-03 12:13:00
還有而且code對架構非常敏感,還有開銷跟同步問題
作者: mmonkeyboyy (great)   2021-01-03 12:14:00
用ARM海快了點@[email protected]~ 主要是你dataflow那個移出cache
作者: erspicu (.)   2021-01-03 12:14:00
記憶體從主機板那邊搬移到GPU的記憶體也是效能耗損拉所以我當初處理影相 雖然是比多核電腦快但略快一點點而已
作者: erspicu (.)   2021-01-03 12:15:00
實際上得考慮到各種耗損 介面速度等等因素 我是真的不知道該拿何種計算方式去做評估
作者: mmonkeyboyy (great)   2021-01-03 12:15:00
GPU內部記憶就不用搬泥 ? 搬啊 搬死啊 跳著搬才是問題是吧都不用算這些 你就算有多少層logic gate要計算就好
作者: erspicu (.)   2021-01-03 12:16:00
不過骨灰級的東西 3.5Mhz 3.4千邏輯閘數 不是現代晶片
作者: Apache (阿帕契)   2021-01-03 12:16:00
這樣算明知故問嗎= =影像已經是GPU相對好解的問題了 其他通常更慢
作者: mmonkeyboyy (great)   2021-01-03 12:18:00
所以我沒有說沒有機會啊 這是上古產品數字這麼少硬塞GPU 採 greedy 方式邏輯用全放的可能可以哦@[email protected]~
作者: Apache (阿帕契)   2021-01-03 12:20:00
你很壞
作者: mmonkeyboyy (great)   2021-01-03 12:21:00
我換一個方式算給你看 這個種control dataflow型
作者: erspicu (.)   2021-01-03 12:21:00
是說mmonkeyboyy能分享"我n年前就跟某廠在做這個事了"哪間公司做了啥相關GPU應用計畫?結果失敗 好奇想聽聽八卦
作者: mmonkeyboyy (great)   2021-01-03 12:23:00
的運算 要加速350倍 ..... 就算是單核比350核也難這沒什麼八卦 你文章多看就有了蠻多人在2010左右做過的我猜你要能拿顆普通GPU到1MHz就是一個大成就了我猜拿顆3990X可能還香點 尤其是
作者: erspicu (.)   2021-01-03 12:29:00
2010年老闆花了一筆錢養RD 結果全都失敗收場滿慘的
作者: mmonkeyboyy (great)   2021-01-03 12:30:00
我不知道你是從何得來上述結論的 反正不是我說的
作者: erspicu (.)   2021-01-03 12:30:00
因為如果我沒記錯當初相關宣傳未來願景等等說得滿多
作者: mmonkeyboyy (great)   2021-01-03 12:33:00
這我就不知道了 反正我現在沒做EDA&GPU 沒關我事不要說我沒啥建樹 你可以考慮看看用tensor core的方解解看logic array 說不定可以呢 不過這個做法我沒很仔細思考過 但我想這應該是少數還沒試過的方法
作者: Neistpoint (Neistpoint)   2021-01-03 13:15:00
目前IC設計的流程是 C model(optional)-> RTL ->Gate level . 轉換之間都會作等效檢查。 如果覺得gatelevel 太慢,可以考慮 反向回RTL, 這樣估計可以快2-3個數量級.
作者: mmonkeyboyy (great)   2021-01-03 13:18:00
他就不要啊XD
作者: javatea (齁齁)   2021-01-03 13:30:00
對牛彈琴 浪費時間啊
作者: erspicu (.)   2021-01-03 13:38:00
一直都在說這顆骨灰級6502 哪來的c model RTL 不需要一直擴大命題假設
作者: freef1y3 ( )   2021-01-03 13:45:00
已經有C++source的話也許可以先試試加OpenMP pragma看能不能加速
作者: erspicu (.)   2021-01-03 13:49:00
專案移植完 會看看有沒有順序性相依關係,能處理掉的話再看看怎麼做能不能達到實機速度也無所謂 反正試試看這顆已經是1975年的東西 3.4k邏輯閘數的老晶片了
作者: mmonkeyboyy (great)   2021-01-03 13:56:00
openmp也有上限啦@[email protected]~ 不過他原來說要放gpu啊不然放3990X 寫得好的快個幾十倍可能還是有的
作者: GameGyu (GameGyu)   2021-01-03 14:20:00
(Synopsys VCS) In heterogeneous environments wherea mix of processors, GPUs and hybrid architectures are available, Cheetah technology can speed-up simulation by up to 5X on RTL and up to 30X on gate-level designs.
作者: expiate (夜露死苦)   2021-01-03 15:36:00
你所謂的更精確卻不用去考慮模型精確反而是加速部分?所以你到底是要做加速還是要更精確的模擬啊?用GPU要怎麼達到你所謂的更精確?我好像更不理解了拿如果是加速,最早的FPGA不就是最好的解嗎?gate cout才3000多,寫Verilog也很快啊還是你就是要加速人家寫好的code而已?
作者: Apache (阿帕契)   2021-01-03 16:14:00
他想在電腦上讓一群情懷黨模擬晶片打紅白機吧
作者: expiate (夜露死苦)   2021-01-03 16:26:00
所以問題應該就是該怎麼寫 cuda kernel來跑MOS 6502的循序電路模擬,使其加速350倍對吧?
作者: erspicu (.)   2021-01-03 17:11:00
差不多是這意思而已
作者: SkyFluid (鹹魚飯X的現身)   2021-01-03 18:47:00
@GameGyu. 不管是S家的cheetah或C家的rocketsim, 用GPU加速都只能跑特定設計, 無法大規模採用, 原因和我先前推文的內容有關. 當然兩家都有想些新點子, 不過很難.
作者: mmonkeyboyy (great)   2021-01-04 01:33:00
ex大 你得到他了 xd
作者: GameGyu (GameGyu)   2021-01-05 18:10:00
GPU本來就很難做他原本功能以外的事啊
作者: mmonkeyboyy (great)   2021-01-07 08:47:00
讓我想起當年被唬弄去用早期的gpgpu....(眼神死)

Links booklink

Contact Us: admin [ a t ] ucptt.com