多线程技术推动下一代嵌入式SoC发展
扫描二维码
随时随地手机看文章
世界各地的设计师都面临着越来越严格的系统成本和功耗方面的限制,同时被要求他们的设计增加更多的性能和功能。 以前的做法是提高处理器的时钟频率,但是这种方法通常会增加功耗。此外存储器性能的提升不能与处理器技术的进步保持一致(图1),两者之间性能上的不匹配限制了系统性能方面的提高。因此提高处理器频率的方法事倍功半。
还有一种选择是采用多内核系统,但是这要付出更大芯片面积和更高成本的代价。任何性能的提高都会导致相应的芯片成本和系统功耗。 另一种选择是采用两个或多个执行单元的多发射处理器,但是它们会争夺硬件资源,也存在着芯片面积问题。此外很多情况下,为了最好地利用多条流水线不得不对软件做出修改。 然而多线程解决方案可通过增加处理器的利用率来隐藏存储器延迟的问题。当一个线程停止时,其他线程就立即馈入流水线,从而显著增加应用的吞吐能力。 单内核上的多线程 最新发布的mips32 34k内核系列可提供单内核上的多线程能力,因而具有更高的系统性能、更低的系统成本和功耗,同时保留现有软件架构上的投资。34k内核针对高度并行的应用,如机顶盒、voip、多功能打印机或数字电视,可通过同时处理软件的多个线程实现系统级并行。
减少总拥有成本和功耗 更高的效率有助于设计师减少系统中的其他硬件模块,如专用的数字信号处理器(dsp)。更高的应用吞吐能力保证了实现同样的性能所需的频率比传统处理器低,从而可降低整体功耗。此外,通过充分利用每个时钟周期的所有计算能力可提升性能。 34k内核系列技术 基于成熟的24ke微架构,34k内核系列采用9级执行流水线连接少量硬件,可处理虚拟处理单元(vpe)、线程关联(tc)和服务质量(qos)优先级。
如图2所示,每个线程都拥有其专用硬件,称做线程关联(tc)。这使每个线程都可以拥有自己的具备预取功能的指令缓冲器,因此核心能以逐个时钟的方式在线程间进行切换,以使流水线尽可能完整。这些做法可以避免开销高昂的关联交换。 每个tc都拥有自己的通用寄存器,一个pc(程序计数器)可保证tc运行来自于复杂操作系统(如linux)上的一个线程。一个tc还和其它tc共享资源,特别是在操作系统内核(os kernel)上的优先代码可使用cp0寄存器。 共享的cp0寄存器组和与其关联的tc构成一个vpe。运行一个线程(如利用一个tc)的vpe非常类似于一个独立的mips cpu,完全符合mip32架构的要求。 所有线程(在任意vpe中)共享同一个高速缓存,所以不会发生高速缓存一致性的问题。这消除了多核和多处理器系统中存在的问题,在这些系统中要用多个周期和额外的逻辑来管理不同的处理器并保证高速缓存的一致性。 根据应用的需求,34k核心可以配置多达5个tc,这些tc由最多两个vpe支持。正是这种vpe和tc的结合提供了最高的芯片面积效率和灵活的解决方案。 服务质量(qos) qos引擎从运行的线程中循环选取指令,逐个周期的交叉执行指令,以使总体应用的吞吐能力最大化。这样就可以使处理器带宽在不同线程之间很好的共享,从而充分利用各自的处理“间隙”。或者通过向特定线程分配专用的处理带宽,也可以实现如通信、视频和音频处理等实时任务所需要的服务质量。 服务质量由分级方法处理(如图3),这样用户就可以将不同等级的处理带宽编程分配给现有的tc。基于分配的带宽,集成的策略管理器(policy manager)可以向单个tc分配优先级,持续监控线程进度,在需要时为分发调度器(dispatch scheduler)提供重要“提示”。分发调度器也可以逐周期的调度线程到执行单元,以保证服务质量要求。 软件应用模型 另一个关键点是大多数配置将运行现有软件而无需修改,对于系统开发者来说这是缩短产品上市时间的主要优势。 以最简单的多线程形式,基于vpe的非对称多处理(amvp)系统可保证两个操作系统同时运行,每一个操作系统又在基于自己vpe的tc上(图4)运行。大多数情况下这两个操作系统很可能是两个已有的操作系统(例如面向控制平面应用的linux和面向数据平面应用的rtos),这些系统以前运行在两个独立的mips内核上。 将两个功能结合到一个核心可减少成本、芯片面积和功耗。这个单芯片、单核心soc可以由两个操作系统用基本相同方式进行控制,正如以前那样使操作系统、应用程序代码的改变降到最低,从而提供一条向更高性能soc器件转移的低风险路径。 34k是高度可配置的内核,图5说明了这一点。用户可以在一个vpe上运行住宅网关的控制平面功能,而在第二个vpe上使用4个tc支持多通道voip,从而大大的降低了系统成本。 本文小结 尽管嵌入式环境是高度并