硬核还原:显微镜手撸晶体管,逆向工程还原经
Sinclair Scientific计算器酷吗?
它很受欢迎,自1974年发售,就频频出现在《大众机械》等出版物封面。其巧妙编写的固件,使它本只用于基础算术的处理器,能马力倍开远远超出正常性能。这也使得Sinclair能将这款计算器卖给无数人,尤其那些买不起高价计算器的人。但它也有弊端,比如,速度很慢,有时不够准确,提供的数学函数也不足以成为科学计算器,而且对于初学者来说操作困难。
我之前对它偶有耳闻,主要还是因为它算是英国微机产业的一个里程碑。因此,当我在Tindie(硬件产品电商平台)看到Chris Chung的该计算器复制套件时,我便点进去看了看。然后浏览了一下有关原计算器工作原理的说明——只有科学计数法?没有“等于”按钮?——这个复制品通过在固件上运行仿真器,来模拟这些行为。而该固件则是通过肉眼观测原处理器上的线路,然后逆向工程出来的。这简直太酷了!于是我也想试着捣鼓捣鼓。
复制品:原始的Sinclair Scientific也以套件形式出售。
Chris Chung的版本小些,用的组件也少些,并且能模拟基于TMS080x CPU系列的两个计算器:一个简单的算术计算器TI Datamath以及Sinclair Scientific。因此,电路板上的印刷丝同时印有两个计算器的布局。
首先,来看看硬件吧。该工具包是众多Sinclair计算器复制品中的一个,但在简化方面做得很有特色:只由一个芯片、一张信用卡大小的印刷电路板、还有少量分立组件组合起来。Chung实际上提供了两款套件:原始套件——这个套件于2014年开发,但2019年底才投入使用,用了两个小型QDSP-6064圆形罩LED模块来显示数字,该模块有着70年代计算器经典外观,但长期以来停产,很难入手。
于是 Chung在2020年对该套件的更新中,用了更先进的七段LED显示屏。两种套件的不同稀有性,价格就能看出:2020版的价格为39美元,而原始版本是79美元。虽然贵,但原始版本能让你很方便地和圆形罩LED一起使用:PCB板上孔的尺寸都设计得刚刚好能用摩檫力卡住。这意味着都无需焊接,这样也就可以将组件进行重复使用。
两种版本的功能差不多,均基于MSP430微控制器。而MSP430消除了对Sinclair Scientific中大多数其他组件的需求,并可以运行TMS080x芯片系列的仿真器。TMS080x系列是由德州仪器(TI)构建,其特定版本(如Sinclair Scientific中用的TMS0805)因其3520位的ROM而与众不同。
70年代外观:圆形罩LED组件在早期计算器中很常见。圆形罩是用来视觉放大的。
一直以来,Sinclair是如何将这块芯片发挥到如此高性能之谜,还一直封存在TMS0805芯片的ROM中。直到2013年,在Ken Shirriff加入Visual 6502团队听说Sinclair Scientifi后,这个谜题才慢慢解开。这个团队喜欢对经典芯片进行逆向工程,因为很多经典芯片的原始设计图纸都已丢失,所以有时,该团队会用酸蚀刻掉芯片封装,再用显微镜仔细拍摄裸露的硅芯片,以查看各个晶体管。而Shirriff先是只通过研究德州仪器(TI)的专利申请,就用Script写出了TMS080x芯片的通用仿真器,但Sinclair的TMS0805 ROM中使用的特定代码却让他百思不得其解,直到Visual 6502团队成员John McMaster在2014年拍下一块硅片后,他才终于搞明白。
同时因为Shirriff对计算史做过大量研究,所以他和IEEE Spectrum也很熟。我就直接给他发邮件,问他怎么从显微照片变成工作代码。“通过查看金属氧化物门在芯片ROM中的排列方式,我就能提取出直接的二进制码,” Shirriff写邮件回复说,“ Phil Mainwaring,Ed Spittles和我花了一天时间弄清楚原始二进制码如何与代码对应… 代码是11比特的320个字节,但ROM实际上电路是55行和64列… 通过检测各种电路组合,分析二进制码中的模式,然后暴力尝试各种租合,我们就找出了正式排列方式并能提取代码了。”
一旦将代码加载入模拟器后,Shirriff和他的团队就可以梳理其工作原理了。对于贯穿其始终用到的,Shirriff解释说:“本质上就是一种能得到答案的最简单的暴力算法。但开发者用了一些有趣的数学技巧来提高准确性,而且还有一些编程技巧来优化代码。”(如果需要详细解释,Shirriff有维护模拟器的在线版本,可以逐行查看代码。)
转一转:Sinclair Scientific计算器中三角函数计算,是通过不断旋转初始矢量到目标角度而实现的。计算大多数角度都需花数秒钟。
Sinclair Scientific还通过后置表示法来降低复杂度,在后置表示法中运算符紧随其运算的数字之后,比如说“ 5 + 4 =”表示为“ 5 4 +”。而三角函数的计算则用迭代逼近技术,该技术可能得几秒才能获得结果,而且通常仅较精确到前三个有效位数。此外还对所有内容用了固定的科学计数法—因此无法输入小数点。所以如果要输入“ 521.4”,就要先输入“ 5214”它在计算器上显示为“5.214”;接着按“ E”并输入“ 2”,使数字成为“ 5.214 x 10^2”。这过程中,一次还只能输入一个数字。
其实这样写出来一看,大家可能会觉得这东西非常破,让人感觉就是在经济上负担不起的情况下,才用的玩意儿。类似HP-35,虽然HP-35的设计者也以其准确性和功能性为荣(HP-35也用了后置表示法,但以一种更巧妙的方式)。
但我们需要知道的是,Sinclair并不是要和其他计算器竞争,而是要与计算尺竞争。我以前在其他文章中读过这一点,但我一直无法理解这句话的含义,直到我亲手拿到这个工具包。之前一次偶然机会,我还入手了一把老式的Pickett计算尺,并了解了如何用它进行基本操作——多亏了国际计算尺博物馆官网上的课程。
所以当我用Sinclair Scientific时,我对其中概念与使用计算尺时概念的高度相似性感到震惊。这里,精度通常也为2到3位数,滑动“游标”意味着在刻度间仅传递一个数字,并且通常不理会0。仅使用较高有效的数字,并由使用者大致估算,得出在末尾哪儿插入小数点,或加多少0。这意味着,使用者会以完全相同的方式,来计算52 x 2和5200 x 20。
这也是为什么,我觉得这款复制套件如此重要——这个机器提供了一种简单的方法,使人无需双手来实际操作设备就能明白计算尺的原理。值得注意的是,正如Henry Petrosk指出的,好的设计实际上并非作为抽象事物独立存在的,而得存在于特定上下文中。
那么,再回到开头的问题,Sinclair Scientific酷吗?
对我来说,答案是肯定的。
相关报道:
https://spectrum.ieee.org/geek-life/hands-on/this-classic-calculator-was-literally-reverse-engineered-from-the-bare-metal
声明:文章收集于网络,版权归原作者所有,为传播信息而发,如有侵权,请联系小编删除,谢谢!
时间:2020-06-16 22:47 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论:
最新文章
热门文章