在不断发展的许多重要市场中都可见到多CPU设计。网络路由是率先广泛应用多CPU设计的领域之一。大多数新一代网络处理器都是基于多CPU设计的。除了标准NPU,目标ASSP也在利用多处理器建立更加优化、更有应用针对性的路由解决方案。许多情况下,特殊ASSP是比标准NPU更为有效率的解决方案。ASSP可以集成恰当的物理接口或考虑片上存储器的大小,亦或提供最佳的处理器配置。
相关的应用如DSLAM和基站或高性能网络存储设备也在利用分治法建立高性能的可编程解决方案。出于成本和/或功耗的原因,甚至终端用户设备也在开始利用多CPU实现最高的性能密度。机顶盒、住宅网关,甚至智能移动设备也都在采用多CPU——不仅再是一个RISC处理器和一个DSP,而是多个RISC处理器和DSP。
如何构成理想CPU内核
用于多CPU设计的理想处理器内核必须具有以下一些重要特性。
首先最重要的是,它必须可提供出色的性能密度。多CPU设计的目的是在每平方毫米或每瓦特拥有尽量多的性能集合。能够以最小空间或最低功耗实现最高MIPS的解决方案才是最佳选择。
另一个需求是处理器间有效的通信。即使许多多CPU设计是软件关联的,仍然需要大量的处理器间的通信。如果没有用来支持处理器之间通信的结构,那么SoC设计师就必须进行开发。这些工作不仅要耗费大量时间,同时也给设计带来了另一方面的复杂性。对于处理器间通信的支持可简化SoC设计师的工作量,也可以缩短开发时间,还可以将分区边界的低效率降到最低。
多CPU设计的另一个挑战的是调试。内核之间是相互影响和彼此依靠的,因此在调试SoC时了解这些交互行为十分重要。CPU需要具备内置能力,在进行调试时能够完全互动。如果没有这种能力,SoC调试可能会迅速变成一场灾难,也许更糟——变得完全不可调试。优秀的多CPU调试工具对于CUP的支持也十分关键,这样才可以保证SoC设计师发挥嵌入CPU的调试能力。
另外需要考虑的是配置和执行CPU内核的灵活性水平。在多CPU设计中,重要的是在最大限度地降低面积和功耗的同时使性能最大化,而一个高度可配置、可合成的CPU有助于设计师考虑特定应用的面积、功率和频率。利用硬内核或不能配置的内核是不可能做的这一点的,它将严重限制执行的选择。
考虑到上述因素,MIPS科技发布了专门针对多CPU设计的CPU内核。MIPS32 M4K内核具有高性能,不过或许令人惊奇的是,它也是小型的低功耗内核,而且还是可合成的,具备低延迟存储器系统。
让我们来看看M4K内核的映射是否满足上述要求。
性能密度
性能密度的定义是,以最小的面积提供最高的性能,或是在最小面积上实现最低的功耗。M4K内核可用紧凑的面积和功率限制来提供高性能。该产品可提供大约1.35Dhrystone(整数和逻辑运算性能测试)MIPS/MHz(无需使用其他内核使用的受到置疑的编译器窍门),采用普通0.13μm工艺的产品可在240MHz(最差情况下)条件下运行,采用更高性能的0.13μm工艺的产品可在300MHz条件下运行。
作为性能密度公式的分母部分,M4K内核是一个非常小和功耗极低的处理器。该产品可配置成像32K门电路,也就是小于0.3mm2的尺寸,而且仍然可以保持整个MIPS32架构的兼容性。该产品的功耗极低,采用0.13μm工艺时可低至0.10mW/MHz。
该内核还具有新的增强型MIPS架构,可改善重要应用功能的性能。这些功能包括优先化、矢量中断及多达4个寄存器上下文,以减少中断延迟和开销。位域和字节级指令可提供高效率的信息包处理。
该产品包括自定义指令集扩展,SoC设计师可利用该功能执行所需的专用的、高度集中的应用优化,并利用定制指令扩展M4K中业界标准的MIPS32指令集。任何寄存器到寄存器或立即存取寄存器指令都可以进行添加。定制指令可为单周期或多周期,也可支持新用户状态。这些自定义指令是由内核RTL、合成脚本和仿真模式支持的,并可使用GreenHills、Cygnus和Mentor等公司的业界标准开发工具。
此外,可能最为重要的是,M4K内核具有上述所有特性,同时可保持MIPS32的完全兼容性,并可使用MIPS CPU广泛的软件和工具。事实上,该内核是惟一具有定制指令扩展和业界标准架构的有效的可配置处理器。
处理器间的通信
在多CPU设计中,处理器间必须进行通信以控制共享资源的使用。在今天的大多数多CPU设计中,存储器关联完全由软件控制,所以通信所需的普通高速缓存关联是不能使用的。
M4K内核通过外部化MIPS架构中的加载关联(LL)行为和条件存储(SC)来支持多CPU信标,以保证对系统逻辑进行必要的监控。此外,SYNC指令的行为可提供存储器排序壁垒,以保证正确的排序语义,也可以提供信号接口,为系统设计提供最大的控制和灵活性。
如图2所示,当执行典型的信标存取码序列时,LL和SC指令可提供原子型读-改-写序列,而无需锁定整个系统。
例如,在测试和设置安全自旋锁定时,LL指令可在信号接口产生一个读指令,它作为LL由系统进行确认。然后系统按照该地址设置监控。如果另一个处理器写入这个受到监控的地址,监控的通过/失败标记就会被清除。当CPU执行SC指令时,系统逻辑根据监控状态有条件执行对存储器的存储。通过/失败指令会返回处理器,而软件通常会重复失败序列,直到成功为止。
同样,SYNC指令的语义外化可保证系统存储器壁垒的正确行为。
如图3的例子所示,SYNC被放置在一个共享缓冲器的最后的存储与可释放一个控制语义的存储之间。当执行SYNC指令时,CPU向系统逻辑发送信号,通知CPU等待同步响应。一旦系统确认指令可以执行,就将信号发回CPU,允许其后的任务或存储继续执行。一个简单的系统可能会等待所有未完成处理事务的完成,而一个更为复杂的系统可在其列队中保持顺序,而缓冲器可以更快地做出响应。这两种系统中,CPU软件和硬件机制是相同的。
M4K处理器间的通信功能是一种优异的解决方案,得到了业界标准开发工具的全面支持。计划利用M4K内核实现多CPU的设计师,可以利用这些功能快速而容易地实现内核之间的通信,缩短设计时间并降低实现风险。
调试支持
多CPU设计中的调试可能是一个挑战。多处理器之间的互动可能产生难以发现和解决的问题,除非调试工具可以在所有内核上同时执行。
M4K内核的基于EJTAG的调试逻辑可以应对这一挑战。首先,M4K内核上的EJTAG接口可与一个SoC上的所有内核进行菊链式(daisy-chained)连接,以保证同时对单个调试器和所有内核进行调试。这样还可以支持独立或同步启动、停止或单步控制。
另外一个很好的功能是M4K支持的多CPU调试是跨CPU的断点的。该内核具有支持CPU断点的能力,可在几个时钟周期内在一个CPU或几个CPU中形成一个断点。该功能是通过一个小型逻辑块由软件控制的,它决定哪个CPU可以穿过另一个CPU。这种能力对于解决CPU互动相关的调试问题非常有用。
M4K内核上的这些调试功能可赋予使用者充分的支持,以及针对多CPU SoC设计的易用调试环境,从而减少设计时间和风险。
可配置性
由于多CPU系统中的效率至关重要,执行的灵活性和可配置性对构建解决特定应用问题的最佳解决方案也非常重要。
M4K内核是MIPS科技开发的最具可配置性的内核。如图4所示,大多数CPU模块是可选择或可配置的。
乘法器可以实现高性能或最小的面积。如前所述,寄存器上下文的数量可以进行配置。如果不需要MIPS 16e内核代码压缩解码器,可以将它去掉。调试支持中的多折衷能力只需要最少的支持,就可确定不同数量的硬件断点,甚至还可以使用TAP控制器。
对于程序和数据跟踪,可以使用或不使用片上捕捉缓冲器,跟踪支持可以进行配置。协处理器接口逻辑可内置或外置。如前所述,自定义的定制化指令扩展可以增加,也可以使用时钟选通(为了减少功耗)。
除了内部内核的配置性,M4K内核还具有存储器系统设计的相当大的灵活性。它可以使用单独指令和数据存储空间来支持哈佛系统,后者采用针对高效存储器存取的极低延迟的同步SRAM型接口。该接口支持单一循环或多循环处理,并支持8位、16位和32位外围设备的连接。该接口也可使用相同的低延迟接口针对结合指令和数据空间的分享内存系统建立。
此外,从SRAM型接口到基于EC系统逻辑的桥接可支持现有的基于MIPS32 4K、4KE或MIPS64 5K内核系统的外围设备应用。
该桥接支持低延迟存储器,以保证本地存储器存取的高性能,同时可连接传统的MIPS-based CPU子系统。
多CPU系统
系统可以用多CPU内核做什么呢?如图5所示,网络存储系统可以使用多核从主处理器卸载特定的功能,就像MIPS64 20Kc那样。通过在网络接口添加一个CPU,可以通过外围设备在本地实现如过滤、L2或L3协议响应和分段与重组等更高级的功能,使主CPU可以处理更高级的协议或管理功能。
同样,利用加速器(如这个例子中的TCP卸载)中的一个或多个M4K内核,可以将特殊高性能功能的与主处理器分开,同时仍然保持标准可重复编程器件的优势。
另一个多CPU系统设计的常见例子是线卡。它可能是一个网络路由器,也可能是DSLAM或无线基站。在这些例子中,平行的CPU子系统,也叫微型引擎,可用来为高度平行的应用提供巨大的总体性能,如level2处理、信息包分类、过滤或标记管理。在这个例子中,主处理器主要用于异常处理。这种方法有许多变化,不仅可用于平行处理,而且可用于处理器流水线或平行处理器流水线。
多CPU设计在芯片设计师中日渐流行,因为它可以提供可扩展和可编程性能,并可满足许多网络和其他嵌入式系统设计的自然分区。对于现在大多数SoC设计来说,多CPU设计不是没有挑战,而是这些挑战可以通过使用CPU内核来解决,MIPS32 M4K正是优化处理工作的解决方案之一。