从BBC Micro到芯片设计

引言

当我10岁的时候,学校的一位老师让我坐在一台电脑前。现在,这并不是你想的那样。我并没有即将被引入计算机编程的神秘领域,尽管那是一台BBC Micro(最可编程且可以说是最具架构复杂性的英国8位微电脑,在那上面我后来通过BASIC和汇编语言初试身手)。相反,我面对的是长达半小时的关于我的学术兴趣、爱好和志向的多项选择题,之后,这台神奇的机器吐出了对我理想未来职业的诊断结果:微电子芯片设计师。

这有点令人困惑,尤其是因为我真正想成为的是一个电脑游戏程序员(好吧,好吧,还有宇航员),而在我周围的环境中,没有人知道一个10岁的孩子该做些什么才能走上通往微电子芯片设计阳光大道的道路。在接下来的几年里,我在学校学习了大量的数学和科学知识,在家里学会了编程(游戏),最初是在BBC Micro上,然后是Commodore Amiga,并多次尝试进入电子学领域,但并不太成功。事实证明,我更多是靠运气而非判断力偶然走上了一条通往目标的合理道路,但直到我18岁时来到剑桥,我才开始意识到自己知识中的空白之处。

剑桥

剑桥在计算机科学史上,尤其是在实用或应用计算领域的历史中,占据着特殊的地位。20世纪30年代末,年轻的剑桥学者艾伦·图灵证明了停机问题(即“这个计算机程序是否会终止?”)是不可计算的;本质上,你无法编写一个能够分析任意其他计算机程序并判断其是否会停止的程序。与此同时,阿隆佐·邱奇独立地证明了同样的结果,这一成果如今以两人的名字共同命名:丘奇‐图灵论题。值得注意的是,尽管邱奇的证明完全基于递归函数的数学方法,图灵的证明则是将计算描述为由我们现在所知的图灵机执行的顺序操作:这些简单的装置在一个无限长的纸带上前后移动,读取符号,根据响应改变其内部状态和移动方向,并写入新的符号。虽然大多数此类机器都专用于单一目的,但图灵引入了通用机器的概念,这种机器可以通过写在纸带上的指令进行配置,以模拟任何其他专用机器的行为。这标志着如今司空见惯的一个概念——通用可编程计算机——的首次出现。

第二次世界大战爆发后,图灵在布莱切利园的盟军破译密码行动中发挥了核心作用。他作为团队的一员(不要完全相信电影中的情节),参与开发了多台专用硬件设备,包括机电式的bombe,该设备实现了破解德国恩尼格玛密码过程的自动化。这些机器均未采用图灵原始思想实验中“有限状态自动机加无限纸带”的架构,因为这种架构更适用于数学分析而非实际实现。甚至连完全电子化的巨人计算机——它对极为复杂的洛伦兹流密码实现了与bombe对恩尼格玛密码同样的突破——也未达到通用可编程性的程度。然而,这一代学术工程师在战后回归平民生活时,他们在密码破译、雷达与火控领域开发大规模电子系统,以及使用热电子管实现数字逻辑电路的经验,被证明具有深远的变革意义。

在剑桥大学数学实验室,莫里斯·威尔克斯带领的一组工程师着手建造后来被称为电子延迟存储自动计算器(EDSAC)的设备。当它于1949年首次投入运行时,拥有500千赫兹时钟速度,以及两个温控水浴中的32根汞延迟线,总共提供2千字节易失性存储器。程序和数据可以通过纸带读取和写入。美国和英国的许多机构都可以提出有限主张,称自己制造了第一台通用数字计算机,具体取决于“第一”的定义。有人声称EDSAC是第一台在其开发团队之外得到广泛使用的计算机;其他学科的学者可以申请使用该机器运行他们自己的程序,从而引入了计算即服务的概念。

EDSAC之后推出了EDSAC II,然后是泰坦。直到20世纪60年代中期,该大学才停止从零开始自行制造计算机,转而开始向商业供应商购买。这种注重实践的传统甚至反映在计算机系目前的名称上:剑桥没有计算机科学学院,而是有一个计算机实验室,它是威尔克斯最初创建的数学实验室的直接延续。

这种对计算机工程实践要素的关注,使剑桥成为高科技初创企业的沃土,其中许多企业是从计算机实验室、工程系或各个数学与科学院系衍生而来(甚至我们的数学家也懂得如何编程),并使其成为跨国公司寻求工程技术人才的磁石。这一围绕大学发展起来的企业网络,被称为剑桥集群、剑桥现象或硅沼,是硅谷之外为数不多的真正意义上的科技集群之一。曾告诉我应该成为一名芯片设计师的BBC微型计算机是剑桥的产品,它的长期竞争对手辛克莱光谱也是如此。你的手机(以及你的树莓派)中包含多个由剑桥芯片公司ARM设计的处理器。在EDSAC诞生七十年后,剑桥依然是英国高科技的中心。

直奔主题

我杂乱无章的计算机学习经历中,最大的缺失之一就是不了解我的计算机在底层是如何工作的。虽然我已经从BASIC逐步深入到了汇编语言,并“停滞”在这个抽象层次上:我可以操作Amiga的硬件寄存器来移动屏幕上的精灵(图形),但却完全不知道如何自己构建一台计算机。直到十年后,我获得了几个学位,并离开学术界加入博通公司(一家因初创企业而来到剑桥、又因工程人才而留下来的美国半导体公司),才终于有一天早上醒来,发现我的名片上印着“微电子芯片设计师”——实际上更高级的头衔,“专用集成电路架构师”。在此期间,我有幸与该领域多位成就远超于我的专家共事并从他们身上学习,其中包括BBC Micro和原始ARM处理器的架构师索菲·威尔逊(与史蒂夫·弗伯共同设计),以及博通公司3D图形硬件工程团队的蒂姆·马姆托拉,他慷慨地为本书撰写了关于图形处理器(GPU)的章节。

在很大程度上,我撰写本书的目标是创作一本我希望自己18岁时就能拥有的“工作原理”类书籍。我们力求以适合感兴趣的中学生或大学一年级本科生理解的水平,介绍现代计算系统的各个主要组成部分,包括中央处理器、易失性随机存取存储器、持久存储、网络和接口。除了讨论当前技术发展水平外,我们也尝试提供一些历史背景;令人惊讶的是,书中涵盖的大多数主题(显然不包括具体的技术细节)对于1949年威尔克斯的EDSAC工程团队而言同样具有相关性。读完本书后,你应该至少能够对计算机运行背后的基本原理有所理解。我坚信,即使你未来的职业方向是软件工程师,并不打算亲自设计计算机,这种理解对你来说仍然是非常有价值的。如果你不了解缓存是什么,那么当你的工作集超过缓存容量,或因缓冲区对齐方式耗尽缓存的关联性时,程序性能急剧下降的情况会让你感到困惑。如果你对以太网的工作原理知之甚少,就很难为你的数据中心构建一个高性能的网络。

曲线中的拐点

在计算机架构领域,如同许多其他领域一样,存在着收益递减规律。在任何特定时刻,无论是原始CPU性能、功耗归一化后的CPU性能、存储密度、晶体管尺寸,还是介质上的网络带宽,其可实现的性能都存在明确的技术极限。然而通常的情况是,在尚未达到这些理论极限之前,工程投入便会遭遇收益递减:每一项渐进式改进都将越来越难以实现,并且在成本方面付出越来越高昂的代价,更重要的是,还会严重影响进度安排。如果将开发投入、系统复杂性(从而导致缺陷易发性)或资金支出与性能之间的关系绘制成曲线,该曲线会在某一点急剧向上弯曲。在此“拐点”左侧,性能会随着投入的增加而以可预测(甚至是线性!)的方式提升;而在右侧,性能的提升将随着投入的增加而变得极为缓慢,逐渐趋近于基本技术限制所形成的“壁垒”。

有时候,性能是无可替代的。例如,阿波罗登月计划是一项令人惊叹的工程成就,其位置远在“曲线的拐点”右侧(由耗费全球最大经济体百分之几的GDP所驱动),这从根本上误导了旁观者对航空航天技术成熟度的认知。直到现在——在经历了50年火箭技术、航空电子设备和材料科学的渐进式发展之后——拐点才移动到了足够远的位置,使得以合理成本进入太空甚至重返月球成为可能。尽管如此,我注意到,那些谦逊地准确判断拐点位置,并及时将设计简单、保守可靠的系统推向市场,然后快速迭代的团队,往往比追求登月式工程的团队更容易取得成功。

保守主义与迭代是我个人在架构设计中的核心理念。迄今为止,我们推出的三代树莓派芯片都使用了完全相同的基础系统架构、内存控制器和多媒体组件,仅对ARM核心组件、少量关键性错误修复以同时钟频率提升进行了修改。这里存在一种张力:工程师(包括我自己)往往是技术爱好者,渴望突破边界。而优秀架构师的职责,则是准确评估根本性变革所带来的风险成本,并将其与预期收益进行权衡。

前进基地

我们于2008年创立了树莓派基金会,最初只是简单地为了解决申请在剑桥学习计算机科学的学生数量下降的问题。现在,我们看到了一些令人鼓舞的复苏迹象,不仅在剑桥,其他地方也是如此,申请人数现在已经超过了20世纪90年代末互联网繁荣时期的高峰水平。

也许我们所见证的变化中最引人注目的,是新一代年轻人对硬件的兴趣远胜于我们在20世纪80年代时的程度。编写一段汇编语言程序来在屏幕上移动精灵(图形)显然已不如从前那样有趣,而操控机器人在地板上移动则令人兴奋得多。如今我们看到12岁的孩子所构建的控制与传感项目,是我到了二十多岁中期都会为之自豪的成果。我希望,当这些年轻人中的一些人未来坐到他们童年时代的BBC Micro职业规划节目的遥远后继者面前时,有人会告诉他们:他们将成为出色的微电子芯片设计师,而这本书或许能帮助其中的一两人踏上这条旅程。

——埃本·厄普顿,剑桥,2016年5月

内容概要:本文介绍了利用Matlab代码实现处理IMU、GPS传感器数据的多种姿态解算算法,重点包括卡尔曼滤波和扩展卡尔曼滤波等技术,旨在提升导航系统的精度与稳定性。通过对传感器数据进行融合与滤波处理,有效解决了惯性导航系统中存在的累积误差问题,提高了动态环境下的姿态估计准确性。文章还提供了完整的算法实现流程和仿真验证,展示了不同滤波方法在实际应用场景中的性能对比。; 适合人群:具备一定Matlab编程基础,从事导航、控制、机器人或自动驾驶等相关领域研究的科研人员及工程技术人员,尤其适合研究生及以上学历或有相关项目经验的研发人员。; 使用场景及目标:①应用于无人机、无人车、机器人等自主导航系统中的姿态估计;②用于教学与科研中对滤波算法的理解与改进;③帮助开发者掌握IMU【处理IMU、GPS传感器】现了多种姿态解算算法,如卡尔曼滤波、扩展卡尔曼滤波等,以提高导航系统的精度和稳定性(Matlab代码实现)/GPS融合算法的设计思路与实现技巧,提升系统鲁棒性与定位精度。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,逐步调试并理解各算法模块的作用,重点关注传感器数据预处理、状态方程构建、噪声协方差调节及滤波结果分析等关键环节,以达到深入掌握姿态解算核心技术的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值