看见我们看不见的

人有眼睛,这太重要了。但是,人眼的能力其实很有限,看不见很远的物体,也看不见很小的物体。为了弥补这样的不足,聪明的大脑总在想办法来增强我们的眼力,让我们可以看见原本看不见的。比如,通过望远镜看的更远,通过显微镜看到更小的物体。

为什么要去探索肉眼看不见的世界呢?因为看不见的东西可能比看得见的更危险。2020年的春天,一种名叫COVID-19的微小病毒让我们深刻认识到了这一点。COVID-19太小了,让我们无法看见。如果我们能轻易地看见它们,那么有太多方法灭掉它,而不必盲目的满世界消毒和躲避了。

4月15日,forbes网站发表了一篇非常好的文章,详细介绍了COVID-19病毒的大小,并且用生动的语言解释了人类为什么看不见它。

根据forbes的文章,COVID-19病毒的大小是50纳米。而人眼能看到的可见光的光波波长是400-700纳米(也有数据说380-780纳米)。这意味着COVID-19可以‘躲过’可见光,所以莫说人眼,就是光学显微镜也看不到它。只有用电子显微镜才可以“扫描”到它。

(照片来自forbes网站)原文链接为:https://www.forbes.com/sites/startswithabang/2020/04/15/no-the-covid-19-coronavirus-is-not-actually-red/#6b8551535cbd

其实,除了看不见的微小病毒很危险之外,人类自己制造出来的一个微观世界也可能很危险,那便是集成电路。以中央处理器(CPU)为代表的计算机芯片是人类制造的最复杂机器,在指甲盖面积大的晶片上搭建出数亿个晶体管,每个晶体管的大小只有十几纳米甚至几纳米,比COVID-19还小。

(英特尔CPU芯片照片,来自网络)

有人可能说,晶体管虽然小,但不可怕啊,怎么可以和病毒比呢?非也!某种程度来说,今天的高铁和飞机都是晶体管在控制着,某一个小小的晶体管“发疯”,就可能导致灾难。

当然,说晶体管发疯,只是个比喻。意思是它可能出意外,不按照我们的期望工作。导致它不工作的原因可能是设计缺欠,可能是上面的软件乱指挥,也可能有“敌人”遥控。

随着工艺的不断进步,芯片上的晶体管越来越多,如何保证那么多的晶体管都正常有序的工作呢?这当然是非常复杂的一个问题。

单个晶体管的大小比病毒还小,直接用肉眼是根本看不见它的状态的。为了解决这样的问题,在1985年,多家半导体厂商联合成立了一个工作小组,名叫“联合测试工作小组(Joint Test Action Group)”,简称JTAG。JTAG小组的工作目标是制定一个标准的方法,让人类可以“看见(测试)”看不见的芯片内部细节。JTAG小组的工作成果后来成为了工业标准,即JTAG标准,按照这个标准设计的工具一般就叫JTAG工具。

在我的《软件调试》一书第一版中,专门有一章介绍JTAG。

《软件调试》第一版中关于JTAG的介绍 (这本书受过潮,很多皱纹^-^,看到这本书想起一位老朋友)

JTAG技术对于英特尔这样的芯片巨头来说当然是至关重要的。因此,英特尔不仅实现了基本的JTAG标准,而且做了很多扩展,并取了一些新的名字,比如ITP和XDP。

使用ITP和XDP调试时,需要一个蓝色的小盒子,把目标机和主机联系起来,就像上面书中插图那样。慢慢的这个小盒子便有了ITP或者XDP这样的名字。

可不要小看中间的那个小蓝盒,它的身价不菲。我在英特尔工作时,曾经为所在小组买过一个。因为公司太大,所以虽然是英特尔公司自己的产品,部门之间也是要付钱的,我记得很清楚,内部价格是500美金,很多年没有变过的价格。

除了直接的标价外,小蓝盒的身价还体现在它的神秘性上,当时公司有严格的纪律,不允许擅自带到公司外面。

大约是2010年,英特尔大力进攻平板市场,推广新的SOC芯片,ODM在Power on新平台时遇到诸多技术难题。老雷接到任务,经领导批准携带ITP前往台北。有一天在ODM的会议室里调试时,一位ODM的工程师看到了我在使用ITP,他惊讶的叫出声来:“哇,你在用ICE啊!”ICE是JTAG的别名,熟悉底层的人也常常用ICE来称呼JTAG调试器,后来的著名软件调试器SoftICE之名正是源于此。

那位台北同行一定是在书中或者文档中知道了ITP,但是从未见过,所以见了大为惊奇,并且呼叫伙伴们来看。他对ITP的敬重,让我对他刮目相看。

2016年底,我离开了英特尔,于是我也没有机会使用ITP了。虽然在2016年前后,英特尔放宽了ITP的限制,把它公然放在官网上销售(价格为3000美金),但是因为市场上的普通主板都没有可以连接ITP的XDP插口,所以也是不能用,我很清楚这一点,所以也就没有考虑购买单独的ITP。不过当我第一次看到ITP被挂到外部网站上公开对外亮相时,我也是大为惊讶,感觉到时代变化,英特尔也在变化。

在去年,一位同行向我询问DCI有关的问题。让我再次激起使用JTAG的兴趣。什么是DCI呢?其实我没离开英特尔时,我就知道这个技术,不过当时还非常敏感,属于未发布的重要技术,即使对于公司内的同事也不可以轻易说。

DCI的字面意思是直接连接接口(Direct Connect Interface)。很多英特尔的技术大牛都承认不善于取名字,的确如此。英特尔的很多名字确实很土,DCI是个代表。

简单来说,DCI解决的问题是让需要特殊接口(称为XDP)的JTAG调试使用USB3.0接口就行了。

《软件调试》第二版卷1中的XDP接口插图

XDP接口在主板上,需要打开机箱才能连上,USB接口在机箱表面,不需要开机箱就能连上了,所以就取了个名字叫“直接连接接口”,字面上看,根本看不出与JTAG的一点关系,而且一点技术味道也没有。

所以,DCI就是“直接能连上的接口”,这是刘姥姥的话,好处是通俗的很。缺点是不准确,搜一下DCI,好多不相关的东西冒出来,因为直接能连上的接口太多了,每个家用电器上都有好几个。^-^ (就此打住,不应该说上家的不好.......其实这也是一种变相的宣传吧)

在写《软件调试》第二版时,我加入了关于DCI的介绍,但是只有寥寥几行,因为当时我也没有实际使用过DCI,“君子戒慎乎其所不睹,恐惧乎其所不闻”,对于没有亲自使用过的技术,我只好淡笔轻描,一带而过。

DCI虽然名字土,但这个很土的名字确实道出了它的最大优点,那就是不需要开机箱就“能”做JTAG调试,这一点确实是一大进步。其实,在DCI之前,对于大多数普通销售的电脑,即使开机箱也是没用的,因为主板上根本没有XDP接口,原因是XDP接口比较贵,虽然很多主板设计时包含它的电路并留有位置,但是只在早期的样板阶段上这个接头,产品时就不上了。

进一步说,DCI的意义不仅是不用开机箱,而且省去了主板上那个价格有点贵的XDP接口,也可谓功莫大焉!

那么这么好的DCI为什么没有很多人用呢?因为虽然大多数机器都有USB接口,可以找根线把目标机器和上位机“直接连接”起来,但是二者还是不能进行DCI对话,因为DCI功能默认是关闭的。

长话短说,英特尔出于某些考虑,默认是把DCI关闭的。这有点像NT内核,虽然都支持内核调试,但是默认是不开启的。与NT内核可以通过简单的命令启用内核调试不同,DCI的启用不那么简单。

如何启用DCI呢?简单说是和芯片对话,把这个关闭的功能打开。

对于具有数十亿晶体管的x86 CPU来说,里面有很多不为外人所知的重重机关和暗道。关于这些机制,细节非常敏感,很多在英特尔工作多年的工程师也可能一点都没听说过。

虽然老雷离开英特尔了,有些东西也不能说。既有离职协议约束,也有职业道德方面的限制。当然也有对经典x86架构的爱!x86架构始于1978年,老雷出生的那个70年代。(今天的00后,已经很难对70年代建立起深刻的认知。)

始于70年代的x86,一路走来,40多年了。这40多个春秋,正是信息时代和互联网从出现到横霸天下的40年。所以你说x86对我们重要不?每个现代人都应该感谢x86,没有x86,你的人生里可能就没有PC、互联网这样的词汇。有的是织布机和发电机。(^-^)

回到正题,对于x86这样的复杂芯片,里面的很多功能是需要动态开关的。就好像庞大的宫殿,肯定是要有一套严密的门锁系统。动态开关x86某个功能单元的技术有多种,级别不同,有的是只能在工厂里完成的,有的是可以在客户手里完成的,有的是一次性的,有的是可以多次的,有的是开机一次性,有的是永久一次性。

细节无法展开,对于DCI也是如此,虽然从Skylake开始的芯片里有这个功能,但是默认不开启,就仿佛偌大的皇宫里,有几座房子是长期关闭的,即使在皇宫住过很多年的人,也未曾见过它打开大门。

英特尔默认关掉DCI的原因不会都明着说出来,在老雷看来,不外乎两个原因:一是防止黑客进攻无辜的系统,这是可以说出来的。二是防止竞争对手抄袭x86的设计,这是可以明着说,但是又不说出口的。

那么在产品期,是否可以开启DCI呢?答案是肯定的,英特尔的官网上就在出售用于DCI调试的新一代小蓝盒和专用的调试电缆。

INTEL官方调试工具商店中的DCI调试专用电缆

说到这里,大家有点晕,其实写者也晕,因为这个问题本身充满着矛盾。这个世界里有些事情就是让人纠结的。对于英特尔来说,芯片里有DCI功能,但是不希望两种人使用:

一种是黑客用它攻击普通x86系统,因为那样无辜用户就会抱怨x86平台不安全,就会流失客户。

另一种是研制芯片的其它公司,不想让他们使用DCI来抄袭自己的设计。

另一方面,英特尔也是希望有人用DCI的,也主要有两类:

一类是x86平台上的硬件开发者,包括联想等PC厂商和众多的ODM。他们可以用DCI来解决开发、生产和产品期的技术难题,遇到问题可以用DCI来自己解决。

另一类是能够丰富x86生态的软件开发者。今天,x86平台最大的竞争优势就是软件生态,遍布世界各地甚至太空的无法完全统计的应用软件,让x86位居流行架构的第一把交椅,毫无争议。离开了软件,芯片本身就是个废物。很多做国产芯片的同行对这一点还认识不深。但英特尔把这个价值观已经反映在了它的公司文化和组织架构里。那么多高管和研究Strategy的都很聪明。

为了让x86生态中的软件开发者可以使用DCI,英特尔也enable了一些第三方的供应商,比如德国的罗德巴赫是有DCI方案的,既有配套的硬件,也有配套的软件,但是价格都很贵。英特尔在上海也曾经enable过一个供应商,但是时间不久就淡漠了。

也是因为很纠结的原因,技术细节只好略过,经过很多个日夜的努力,又耗掉很多根头发......在前不久,老雷终于成功开启了神秘的DCI,成功时,很是兴奋,特意拍了张照片,作为记录。

老雷的cubic

一张照片抵上十万文字,这张照片里确实有很多细节,有些老朋友看了后更是可以看出更多信息。比如那幅钟馗图,陪伴老雷从ZZ99搬到ZZ1,又在ZZ2搬家很多次,告别英特尔时,交给朋友保管,后来他专门驱车送到老雷家里,创业后,老雷又将它搬到新的办公室。

短文已经不短,从昨天晚上写到今天一早,文字不少了,但只是把DCI的背景和纠结之处说了,没有包括技术细节,对于技术细节感兴趣的,那么老雷也必须验明正身(实名制是必须的),了解清楚目的才能决定对哪些人可以说,对哪些人不能说。原因和英特尔一样,老雷也是希望强大的DCI技术能帮助一些同行解决技术难题,但是也不希望它被误用。细节跳过,对技术细节感兴趣的Geek们可以通过高端调试网站上的DCI专区做更多交流和讨论(http://advdbg.org/gdk/index.aspx)。

“到达没有到达过的领地,看见原本无法看见的事物。”这是我们内心里一个永恒的梦想,也是推动社会发展和科技进步的一个原动力。DCI是个强大的技术,它可以帮助我们看见原本看不见的世界,但是我们也必须使用好的技术做好的事(Do the right thing in right way)。

***********************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生

欢迎关注格友公众号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值