Visual 6502:在浏览器里看着晶体管一颗颗跑起来

查看原文 HN 讨论

文章摘要

Visual 6502 是一个在浏览器里运行的、晶体管级别的 MOS 6502 处理器模拟器——不是指令级模拟,不是逻辑门级模拟,而是把这颗芯片上每一颗晶体管的真实物理状态画出来给你看。页面正中是芯片的彩色版图,颜色对应每个多边形当前是高电平还是低电平;按 n 单步推进模拟,按 z / x 缩放,鼠标左键拖动平移。你能亲眼看到芯片如何从内存取指令和数据、寄存器和内部总线如何工作,以及仅仅是把「时钟」这一个输入引脚来回拉高拉低,就足以驱动整颗芯片一步步跑完一段程序。

这个项目的来路比页面本身更有意思。Visual6502.org 是一个小团队的「计算机考古」工程,目标是保存、研究和记录历史计算机,并且坚持用视觉、直观的方式呈现,既用于教育与启发,也作为经典计算机系统的可验证参考。2009 年夏天,他们从一颗实物 6502 开始:剥开封装露出硅片,对表面做高分辨率拍照,同时也拍下衬底;用这两张高度精细且对齐的照片,为芯片上每一个物理元件手工建立矢量多边形模型——6502 一共约两万个。由于这些元件之间只以几种简单方式相互接触并构成电路,他们通过对多边形做求交运算,就直接得出了整颗芯片的完整数字模型和晶体管级模拟。这个模型精确到可以跑真实的 6502 程序,包括 Atari 游戏。项目于 2010 年 7 月 27 日在洛杉矶 SIGGRAPH 首次亮相。

团队的工作远不止 6502。他们收到了 200 多颗捐赠芯片、开封了其中 100 多颗,还把 Atari 2600 的 TIA 芯片重建结果与 6502 模拟拼在一起,直接产出经典 Atari 游戏的视频帧;他们也在重建若干经典声音与语音合成芯片(Commodore 6581 和 8580 SID 等),以及 Zilog、AMD、Intel、Motorola、General Instruments、TI 等厂商的多颗经典芯片。他们特别欢迎大家提供损坏或已失效的芯片和电路板——恰恰因为坏掉的器件对这种「剥开来拍照建模」的方法毫无损失,反而是完美素材,从而能在实物彻底失效之后,把这些硬件的形态与功能长久保存下来。页面本身老老实实提示这份模拟需要较新的浏览器和大量内存,站点最后一次更新是 2012 年 1 月,那时它已累计 25 万独立访客、送出 2TB 以上的芯片照片与模拟数据。源码在 GitHub 上以 visual6502 开源。

HN 评论精华

这条讨论意外地变成了一场跨平台跑分大会——因为晶体管级模拟极其吃单核性能,这个页面成了一个天然的单线程基准测试。