硬件为软件减负,正在成为芯片架构的新选择

过去有一种普遍看法:单纯为了让软件更高效而增加硬件,是一种浪费。每多一项硬件功能,都会占用宝贵的芯片面积、增加功耗,还会拉高设计与验证成本。在晶体管预算非常紧张的时代,硬件只留给那些能带来明确性能或功能收益的能力,软件团队则要自己消化系统的大部分复杂度。

打开网易新闻 查看精彩图片

这种取舍正在发生变化。随着软件在产品开发中所占的比重越来越大,把降低软件复杂度作为目标来设计片上系统,已经变成一种有意识的架构决策。

CPU与加速器共享数据,协调问题越来越突出

在AI系统中,加速器可能把数据写入内存,随后CPU再读取这些数据;或者控制信息会在CPU与加速器之间共享。随着CPU和加速器交换的共享数据越来越多,软件必须持续跟踪每个处理单元当前使用的是最新版本,还是已经发生变化的数据。

如果把这些共享数据的协调工作放在软件层完成,系统会变得更复杂,还容易出现难以调试的错误。正因如此,缓存一致性正在芯片硬件中被越来越广泛地采用。工程师开始转向缓存一致性这项芯片级技术,让共享信息无论位于内存还是缓存中都能保持最新状态,从而确保CPU看到的是正确版本。

当更多管理工作被移入一致性互连和内存系统之后,软件可以变得更简单、更可靠,开发速度也会更快。

早期方案靠隔离计算资源回避问题,但难以扩展

早期的加速器系统常常通过把计算资源分开来回避数据管理问题。CPU可能通过PCIe与加速器通信,先把数据复制到加速器内存,再发送消息,然后等待结果返回。当处理器和加速器相对独立运行时,这种方式还能应付;但随着系统中流动的共享数据越来越多,这种方案会越来越难以扩展。

这一挑战在边缘AI中更加明显。边缘AI里,通用处理器和AI加速器往往集成在同一颗SoC上,或者延伸到紧密耦合的基于小芯片的设计中。数据要经过多个处理阶段,结果才会返回给应用。

高带宽数据流并不总是需要缓存一致性,但用于协调系统运行的信息却需要。由硬件管理的缓存一致性,把这项责任从软件转移到一致性互连上,从而在异构系统中实现可扩展的一致性。

多芯片设计沿用同一套架构原则

同样的架构原则也适用于多芯片系统。当设计人员把更大的器件划分到多个芯片上时,计算资源仍然需要高效地交换共享信息。Arteris把缓存一致性扩展到单颗芯片之外,使一致性异构SoC和基于小芯片的设计能够继续扩展,而不必把共享数据协调工作重新推回软件层。

边缘AI系统的目标,并不是让每一次数据传输都追求极致效率,而是通过硬件承担更多协调职责,让软件不必再为数据版本和一致性状态耗费大量精力。这种从软件向硬件迁移复杂度的思路,正在改变AI芯片架构的设计方向。