为什么我们需要开源的系统芯片?

本文探讨了现代系统芯片(SoC)的复杂性,强调了开源SoC的必要性,以确保安全性和透明度。作者指出,由于设计错误和废弃功能的存在,SoC中可能存在安全隐患。 Precursor项目通过使用可重编程的FPGA来解决这一问题,提供更高的透明度和修复能力。文章介绍了Precursor SoC的设计,包括其核心区域、调试块、内存映射和加密区域,展示了一个开源系统芯片的实例。
摘要由CSDN通过智能技术生成

现代的小型电子产品往往基于某个高度集成的芯片构建,这种芯片称为“系统芯片”(System on aChip,缩写:SoC)。最早的家用计算机主板大约包含一百多个芯片,然而当80286 PC/AT兼容机成为主流后,在摩尔定律的推动下,主板上的芯片减少到了寥寥几个,而且这个行业永远不会走回头路。现在,典型的SoC可以集成一个CPU核心组件,以及数十个外围设备,包括模拟、RF和电源等功能。我们甚至还有“系统级封装”解决方案,可将SoC、RAM,有时甚至将FLASH芯片封装到一个塑封中。

现代SoC极其复杂。现代SoC完整的“用户手册”往往长达几千页,而bug列表也有几百页。我在“用户手册”上加了引号,因为即使是最开放、文档最齐全的SoC(例如NXP的i.MX系列),也必须签署严格的保密协议,才能阅读各种第三方知识产权功能模块对应的数千页文档,例如视频解码、图形加速以及安全等。除了需要保密协议的文档之外,通常还有数千页未发布的、针对那些不再使用的芯片区域的文档,例如原本设计中包含但最终未能成功的外围设备,内部调试工具以及预引导工具等。许多不再使用的功能,甚至连设计芯片的团队都不知道!

不再使用的芯片区域是一件大事,因为构建芯片可不像搭乐高积木那般简单,它更像是雕刻家刻在大理石快上的雕塑,因此添加电路的难度远远高于关闭电路。增加一条电路仅制作新的掩膜就大约需要花费100万美元,同时还会导致项目延迟70天(大约10万人时的额外工作)。而在正确计划的情况下,关闭一条电路非常简单,只需要修改代码,或者针对某个掩模层进行轻微改动,只需要花费大约1万美元以及几天的延迟(假设晶圆尚处于中期阶段,很容易进行这样的改动)。

为什么我们需要开源的系统芯片?
因此,刚开始的时候,系统芯片的掩模组常常拥有很多额外的功能、备用逻辑和调试功能,然后逐步剔除(弃用)部分功能,直到最后系统芯片成型。正如米开朗基罗曾经说:“每一块大理石中都隐藏着一个雕像,而雕塑家的任务就是发现它。”而我们可以说:“每个系统芯片的掩模组中都隐藏着一个数据手册,而验证团队的任务就是发现它。”有时,最后的修补发生在启动时刻,利用一些在CPU执行任何指令之前就执行的代码来关闭错误的功能或者打补丁。这样做的结果就是,即使是文档最完善的系统芯片中,被标记为不再使用的晶体管数量也不可忽视,尽管理论上这些晶体管不会被用户看到。

从安全角度来看,系统芯片中的这种“暗物质”的存在令人担忧。不必担心ROM的启动或CPU微代码的问题,内建自测试(Built in Self Test,即BIST)基础设施具有执行代码注入所需的一切,你只需将它设置为正确的模式。此外,系统芯片集成商都会从寥寥几个IP供应商那里购买DDR、PCI和USB等功能块。这意味着,成千上万的设备都加载了相同的弃用逻辑单元,甚至不同品牌和竞争产品之间也一样。所以,系统芯片中存在无法修补,甚至可能破坏生态系统的危险!

为了规避这种风险,Precursor使用FPGA来实现系统芯片。FPGA允许使用者重新编程,从而极大地降低了设计错误带来的成本。我们不必

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值