系统架构设计:从需求到蓝图

系统架构设计,说白了就是给芯片画一张「施工蓝图」。我做了十几年芯片,见过太多项目因为架构没想清楚就开干,最后流片回来发现性能不达标、功耗压不住,只能回炉重造。嗯,这章咱们就聊聊架构设计里最核心的三个问题:设计原则、总线选型和处理器选择。

架构设计原则:少走弯路的几条铁律

我个人习惯,拿到需求后先不急着选IP、搭框架。先问自己几个问题:

  • 性能目标是多少? 算力、带宽、延迟,哪个是瓶颈?
  • 功耗预算有多少? 是电池供电还是插电设备?
  • 面积成本能接受多大? 芯片面积直接决定晶圆成本。
  • 可扩展性要求高吗? 未来要不要加核、加外设?

这几个问题想清楚了,架构方向基本就定了。我总结了几条实战中反复验证的原则:

架构设计核心原则

  • 分离关注点:计算、存储、控制、接口各司其职,别混在一起。
  • 局部性优先:数据尽量在本地处理,减少跨模块通信。
  • 流水线思维:把处理过程拆成多级,提高吞吐量。
  • 预留余量:带宽、存储、地址空间至少留20%余量。
  • 可测试性:架构阶段就要考虑DFT,不然后期加测试逻辑很痛苦。

举个例子,我之前做过一个AI加速器项目。需求方说「峰值算力1TOPS就行」,我硬是留了50%余量。结果后来算法升级,算力需求翻倍,还好架构上预留了扩展接口,不然整个项目就得推倒重来。

总线架构选择:AMBA AXI/AHB/APB

总线是芯片的「高速公路」。ARM公司搞的AMBA总线协议,现在基本是行业标准。我刚开始做设计时,总觉得总线选型无所谓,随便选一个就行。直到有一次,一个高速外设挂在APB总线上,性能死活上不去……嗯,从那以后我再也不敢乱选总线了。

三种总线怎么选?看这张表就清楚了:

特性 AXI AHB APB
带宽 高(支持突发传输、乱序传输) 中(支持突发传输) 低(单次传输)
复杂度 高(5个通道,握手协议复杂) 中(2个阶段,协议较简单) 低(状态机简单)
适用场景 DDR控制器、DMA、高性能加速器 SRAM、中等带宽外设 低速控制寄存器、GPIO、UART
功耗 较高 中等 低
典型频率 500MHz+ 200-500MHz 50-200MHz

实际项目中,我通常这样搭配:

  • AXI:连接CPU、DDR、GPU、AI加速器等「大胃口」模块。
  • AHB:连接SRAM、Ethernet、USB等中等带宽外设。
  • APB:连接GPIO、I2C、SPI、定时器等低速控制寄存器。

实战小技巧:AXI总线虽然性能强,但布线面积大、功耗高。如果系统对功耗敏感,可以考虑用AXI-Lite替代AXI-Full。AXI-Lite不支持突发传输,但协议更简单,面积和功耗能省30%左右。

我曾经在一个IoT芯片项目里,把原本用AXI的WiFi模块改成了AHB。因为WiFi的数据量不大,AHB的带宽完全够用,结果面积省了15%,功耗降了20%。

处理器选型:ARM vs RISC-V

处理器是芯片的「大脑」。选ARM还是RISC-V?这个问题我每年都会被问几十次。说实话,没有标准答案,关键看你的应用场景。

先看一张对比表:

维度 ARM RISC-V
生态成熟度 极高(工具链、OS、中间件齐全) 中等(正在快速完善)
授权模式 商业授权(费用较高) 开源免费(商业使用需注意许可证)
性能 成熟稳定(Cortex-A/R/M系列) 灵活可定制(可扩展自定义指令)
功耗 优化成熟(尤其Cortex-M系列) 可深度优化(无历史包袱)
安全性 TrustZone等成熟方案 需自行实现或购买第三方IP
开发难度 低(资料多、社区大) 中等(文档质量参差不齐)

我个人习惯这样选:

  • 消费电子、手机、平板:ARM Cortex-A系列,生态成熟,性能有保障。
  • IoT、MCU、低功耗设备:ARM Cortex-M系列,功耗控制一流。
  • AI加速器、专用处理器:RISC-V,可以自定义指令,灵活性高。
  • 国产化、自主可控项目:RISC-V,没有授权风险。

避坑指南:我曾经在一个项目里选了RISC-V,结果发现某个外设驱动只有ARM版本。虽然RISC-V也能移植,但花了整整两周时间。所以,选型前一定要确认好软件生态是否满足需求。

另外,现在很多芯片采用「大小核」架构。比如一个大核ARM Cortex-A76跑Linux,几个小核RISC-V跑实时任务。这种异构架构既能保证性能,又能控制功耗。

系统架构图:把思路画出来

说了这么多,咱们画一张典型的SoC架构图,把上面讲的内容串起来:

典型SoC系统架构图 处理器集群 ARM Cortex-A76 RISC-V 协处理器 L1/L2 Cache AXI 系统总线(高带宽、乱序传输) 高速外设 DDR控制器 | DMA 加速器 GPU | AI加速器 AHB 总线(中等带宽) 中速外设 Ethernet | USB 存储 SRAM | Flash APB 总线(低速控制) GPIO | I2C | SPI | UART | 定时器 | 看门狗

这张图展示了一个典型的SoC架构。处理器集群通过AXI总线访问高速外设和加速器,中速外设挂在AHB总线上,低速控制寄存器则走APB总线。三层总线通过桥接器互联,既保证了性能,又控制了功耗和面积。

架构设计检查清单

  1. 性能目标是否明确?带宽、延迟、算力是否满足?
  2. 总线选型是否合理?AXI/AHB/APB各司其职?
  3. 处理器选型是否匹配?ARM还是RISC-V?
  4. 功耗预算是否达标?有没有低功耗模式?
  5. 可扩展性如何?未来升级是否方便?
  6. 软件生态是否支持?驱动、OS、工具链齐全吗?
  7. DFT是否考虑?测试覆盖率够不够?

嗯,架构设计这块就聊到这儿。记住一句话:架构设计不是一步到位的,需要反复迭代、权衡。我每次做新项目,架构至少改三版才敢往下走。你想想看,如果架构错了,后面所有工作都是白费。所以,多花点时间在架构上,值得。