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