芯片架构师到底该干什么
这年代“芯片架构师”多如牛毛,最近正好在做相关工作,加之对如何收尾软硬件接口设计一直没想法,那就聊聊传统上负责芯片架构设计的芯片架构师到底该干什么吧。 1. 确定芯片feature和规格 一般来讲,芯片立项时的规格定义应该是marketing的工作,对于芯片架构设计而言更多的是一种输入。当然在这个过程中芯片设计者可以为芯片定义提供有效的输入,譬如说PPA的预估和spec的可实现行评估。 2. 完成block功能划分 把芯片支持的feature和功能合理的分配到不同的block上,是芯片架构设计过程中思考的第一项工作。它既包括芯片的软硬件划分,又包括芯片硬件block之间的划分。芯片设计归根结底是一个算力分配的问题,芯片上的逻辑门和memory都是用于承载算力的基本资源。因此哪些工作给图灵完备的CPU做,哪些工作给GPU这类加速器做,哪些工作需要设计专用的DSA/HWA来承载,需要在架构设计的时候想明白。一般来说CPU的通用性强,升级能力强,但是性能差;专用的HWA加速能力强,通用性和升级能力就差了;而各类DSA则处于CPU和HWA之间。具体怎么分配,本质上取决于对业务的认识和对未来的判断,需要冲击性能的就得想办法实现绝对加速,业务可能发展变化的就需要考虑可编程和升级能力。 3. 定义数据结构 芯片抽象看起来,无非是搬移数据和处理数据这两个任务。因此设计灵活的、方便处理的、减少搬移需求的、适合软硬件和芯片间交互的数据结构就是下一步该做的事情。数据结构设计没有固定的套路可寻,且不同出身的架构设计者设计出的数据结构往往大相径庭。一般来讲,方便软件使用、方便硬件设计,能达到PPA均衡、具备灵活配置能力的数据结构就挺好。 4. 设计总线架构 有了block划分和数据结构,接下来需要设计合适的总线架构让数据在block之间高效的流动起来。既需要节省宝贵的连线资源,又需要突破存储墙的限制保证block能够被尽量喂饱。常见的总线无非是crossbar和mesh等寥寥几种,根据带宽需求和数据结构特定进行合理的设计其实不难。 5. 完成核心block的功能和架构定义 这是芯片架构设计的最后一步,也是block架构师设计工作的起点。有了明确的起点,mem架构师、hsio架构师、power架构师、security架构师......才可以开始更详细的block架构设计。当然,和接收芯片spec定义一样,这个过程也可能是互相成就不停迭代的。 一名合格的芯片架构师,能完成上面的五项工作就已经很不错了。以前以为coding和cr是架构师水平的体现,现在倒是觉得那些事情当个兴趣就可以了,架构设计能力归根结底比的是见多识广,多看多读多写多画多讲多听才是真正该干的事情。