多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正是优化处理工作的解决方案之一。